admin: updated dist files
This commit is contained in:
parent
e72a3cf078
commit
214b7ba217
@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.connect = exports.checkProvider = exports.getProvider = exports.getProviderNetworks = exports.providerNames = void 0;
|
||||
const index_js_1 = require("../index.js");
|
||||
;
|
||||
const ethNetworks = ["default", "mainnet", "rinkeby", "ropsten", "goerli"];
|
||||
const ethNetworks = ["default", "mainnet", "goerli"];
|
||||
//const maticNetworks = [ "matic", "maticmum" ];
|
||||
const ProviderCreators = [
|
||||
{
|
||||
@ -99,9 +99,16 @@ function getProviderNetworks(provider) {
|
||||
exports.getProviderNetworks = getProviderNetworks;
|
||||
function getProvider(provider, network) {
|
||||
const creator = getCreator(provider);
|
||||
try {
|
||||
if (creator) {
|
||||
return creator.create(network);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
if (!(0, index_js_1.isError)(error, "INVALID_ARGUMENT")) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
exports.getProvider = getProvider;
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
@ -1,20 +1,23 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const assert_1 = __importDefault(require("assert"));
|
||||
const create_provider_js_1 = require("./create-provider.js");
|
||||
const index_js_1 = require("../index.js");
|
||||
/*
|
||||
import assert from "assert";
|
||||
|
||||
import { connect } from "./create-provider.js";
|
||||
|
||||
import { Contract } from "../index.js";
|
||||
|
||||
describe("Test Contract", function() {
|
||||
it("tests contract @TODO: expand", async function() {
|
||||
const provider = (0, create_provider_js_1.connect)("mainnet");
|
||||
const contract = new index_js_1.Contract("dai.tokens.ethers.eth", [
|
||||
const provider = connect("mainnet");
|
||||
|
||||
const contract = new Contract("dai.tokens.ethers.eth", [
|
||||
"function balanceOf(address) view returns (uint)"
|
||||
], provider);
|
||||
assert_1.default.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
|
||||
|
||||
assert.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
|
||||
});
|
||||
});
|
||||
*/
|
||||
/*
|
||||
import { Typed } from "../abi/index.js";
|
||||
import * as providers from "../providers/index.js";
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,0CAAuC;AAGvC,QAAQ,CAAC,eAAe,EAAE;IACtB,EAAE,CAAC,8BAA8B,EAAE,KAAK;QACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,uBAAuB,EAAE;YACnD,iDAAiD;SACpD,EAAE,QAAQ,CAAC,CAAC;QAEb,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
|
||||
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;EAkBE;AACF;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
|
@ -7,13 +7,13 @@ const assert_1 = __importDefault(require("assert"));
|
||||
const create_provider_js_1 = require("./create-provider.js");
|
||||
describe("Resolve ENS avatar", function () {
|
||||
[
|
||||
{ title: "data", name: "data-avatar.tests.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
||||
{ title: "ipfs", name: "ipfs-avatar.tests.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
||||
{ title: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
|
||||
{ title: "data", name: "data-avatar.tests.ethers.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
||||
{ title: "ipfs", name: "ipfs-avatar.tests.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
||||
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
|
||||
].forEach((test) => {
|
||||
it(`Resolves avatar for ${test.title}`, async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
const avatar = await provider.getAvatar(test.name);
|
||||
assert_1.default.equal(test.value, avatar, "avatar url");
|
||||
});
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,owCAAowC,EAAE;QAC7zC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,8EAA8E,EAAE;QACvI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC,EAAE;KAC/F,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,owCAAowC,EAAE;QACp0C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8EAA8E,EAAE;QAC9I,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,qCAAqC,EAAE;KACtG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@ -16,11 +16,11 @@ describe("Test CCIP execution", function () {
|
||||
]);
|
||||
assert_1.default.equal(result, (0, index_js_1.keccak256)(check), "response is equal");
|
||||
};
|
||||
const address = "0xAe375B05A08204C809b3cA67C680765661998886";
|
||||
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
|
||||
const calldata = "0x1234";
|
||||
it("testGet passes under normal operation", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGet(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -31,7 +31,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGet(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address,
|
||||
@ -41,13 +41,13 @@ describe("Test CCIP execution", function () {
|
||||
const result = await provider.call(tx);
|
||||
console.log(result);
|
||||
}, (error) => {
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
||||
});
|
||||
});
|
||||
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
provider.disableCcipRead = true;
|
||||
// testGetFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
@ -58,13 +58,13 @@ describe("Test CCIP execution", function () {
|
||||
const result = await provider.call(tx);
|
||||
console.log(result);
|
||||
}, (error) => {
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
|
||||
});
|
||||
});
|
||||
it("testGetFail should fail if all URLs 5xx", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGetFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -81,7 +81,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGetSenderFail should fail if sender does not match", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGetSenderFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -94,13 +94,14 @@ describe("Test CCIP execution", function () {
|
||||
const errorArgsJson = '["0x0000000000000000000000000000000000000000",["https://ethers.ricmoo.workers.dev/test-ccip-read/{sender}/{data}"],"0x1234","0xb1494be1","0x4d792065787472612064617461"]';
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData &&
|
||||
error.errorSignature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
|
||||
JSON.stringify(error.errorArgs) === errorArgsJson);
|
||||
error.revert &&
|
||||
error.revert.signature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
|
||||
JSON.stringify(error.revert.args) === errorArgsJson);
|
||||
});
|
||||
});
|
||||
it("testGetMissing should fail if early URL 4xx", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGetMissing(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -117,7 +118,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGetFallback passes if any URL returns correctly", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testGetFallback(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -128,7 +129,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testPost passes under normal operation", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
// testPost(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,0CAKqB;AAErB,6DAA+C;AAE/C,QAAQ,CAAC,qBAAqB,EAAE;IAE5B,sEAAsE;IACtE,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAS,MAAc,EAAE,IAAY,EAAE,MAAc;QAChE,MAAM,KAAK,GAAG,IAAA,iBAAM,EAAC;YACjB,IAAA,kBAAO,EAAC,IAAA,qBAAU,EAAC,MAAM,CAAC,CAAC,EAAE,MAAM;YACnC,IAAA,kBAAO,EAAC,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC,EAAE,IAAI;SAClC,CAAC,CAAC;QACH,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAA,oBAAS,EAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAChE,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,4CAA4C,CAAC;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAE1B,EAAE,CAAC,uCAAuC,EAAE,KAAK;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,qCAAqC;QACrC,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK;QACzE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,qCAAqC;QACrC,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE;YAClB,MAAM,iBAAiB,GAAG,44BAA44B,CAAC;YACv6B,OAAO,CAAC,IAAA,0BAAe,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK;QACrE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QACnC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;QAEhC,yCAAyC;QACzC,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE;YAClB,MAAM,iBAAiB,GAAG,44BAA44B,CAAC;YACv6B,OAAO,CAAC,IAAA,0BAAe,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,yCAAyC;QACzC,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE;YAClB,MAAM,QAAQ,GAAG,4GAA4G,CAAC;YAC9H,OAAO,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,kBAAkB;gBAC3E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK;QAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,+CAA+C;QAC/C,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE;YAClB,MAAM,aAAa,GAAG,0KAA0K,CAAC;YACjM,MAAM,iBAAiB,GAAG,44BAA44B,CAAC;YACv6B,OAAO,CAAC,IAAA,0BAAe,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAC9D,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,qDAAqD;gBAChF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,6CAA6C,EAAE,KAAK;QACnD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,4CAA4C;QAC5C,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,gBAAM,CAAC,OAAO,CAAC,KAAK;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE;YAClB,MAAM,QAAQ,GAAG,sGAAsG,CAAC;YACxH,OAAO,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB;gBAC/E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,qDAAqD,EAAE,KAAK;QAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,6CAA6C;QAC7C,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;QAEnC,sCAAsC;QACtC,MAAM,EAAE,GAAG;YACP,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI;YACjC,IAAI,EAAE,4MAA4M;SACrN,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAA"}
|
@ -24,7 +24,7 @@ function forEach(prefix, tests, func) {
|
||||
continue;
|
||||
}
|
||||
// Prepare the testcase
|
||||
(0, utils_js_1.retryIt)(`Foo ${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
|
||||
(0, utils_js_1.retryIt)(`${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
|
||||
// Create a provider
|
||||
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
||||
try {
|
||||
|
File diff suppressed because one or more lines are too long
148
lib.commonjs/_tests/test-providers-errors.js
Normal file
148
lib.commonjs/_tests/test-providers-errors.js
Normal file
@ -0,0 +1,148 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const assert_1 = __importDefault(require("assert"));
|
||||
const index_js_1 = require("../index.js");
|
||||
const create_provider_js_1 = require("./create-provider.js");
|
||||
describe("Tests Provider Errors", function () {
|
||||
const panics = [
|
||||
//{ code: 0x00, reason: "GENERIC_PANIC" },
|
||||
{ code: 0x01, reason: "ASSERT_FALSE" },
|
||||
{ code: 0x11, reason: "OVERFLOW" },
|
||||
{ code: 0x12, reason: "DIVIDE_BY_ZERO" },
|
||||
//{ code: 0x21, reason: "ENUM_RANGE_ERROR" },
|
||||
//{ code: 0x22, reason: "BAD_STORAGE_DATA" },
|
||||
{ code: 0x31, reason: "STACK_UNDERFLOW" },
|
||||
{ code: 0x32, reason: "ARRAY_RANGE_ERROR" },
|
||||
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
|
||||
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
|
||||
];
|
||||
const cleanup = [];
|
||||
after(function () {
|
||||
for (const func of cleanup) {
|
||||
func();
|
||||
}
|
||||
});
|
||||
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
|
||||
const networkName = "goerli";
|
||||
for (const { code, reason } of panics) {
|
||||
for (const method of ["call", "estimateGas"]) {
|
||||
for (const providerName of create_provider_js_1.providerNames) {
|
||||
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
||||
if (provider == null) {
|
||||
continue;
|
||||
}
|
||||
// Shutdown socket-based provider, otherwise its socket will prevent
|
||||
// this process from exiting
|
||||
if (provider.destroy) {
|
||||
cleanup.push(() => { provider.destroy(); });
|
||||
}
|
||||
it(`tests panic code: ${providerName}.${method}.${reason}`, async function () {
|
||||
this.timeout(10000);
|
||||
const data = (0, index_js_1.concat)([
|
||||
(0, index_js_1.dataSlice)((0, index_js_1.id)("testPanic(uint256)"), 0, 4),
|
||||
(0, index_js_1.zeroPadValue)((0, index_js_1.toArray)(code), 32)
|
||||
]);
|
||||
const tx = { to: testAddr, data };
|
||||
try {
|
||||
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
|
||||
console.log(result);
|
||||
assert_1.default.ok(false, "panic call did not throw");
|
||||
}
|
||||
catch (error) {
|
||||
assert_1.default.ok((0, index_js_1.isCallException)(error), "isCallException");
|
||||
// Check some basics
|
||||
assert_1.default.equal(error.action, method, `error.action == ${method}`);
|
||||
assert_1.default.equal(error.reason, `Panic due to ${reason}(${code})`, "error.reason");
|
||||
// Check the transaciton
|
||||
assert_1.default.equal(error.transaction.to, tx.to, `error.transaction.to`);
|
||||
assert_1.default.equal(error.transaction.data, tx.data, `error.transaction.data`);
|
||||
// We have no invocation data
|
||||
assert_1.default.equal(error.invocation, null, `error.invocation != null`);
|
||||
// Check the revert
|
||||
assert_1.default.ok(error.revert != null, "error.revert == null");
|
||||
assert_1.default.equal(error.revert.name, "Panic", `error.revert.name`);
|
||||
assert_1.default.equal(error.revert.signature, "Panic(uint256)", `error.revert.signature`);
|
||||
assert_1.default.equal(error.revert.args.length, 1, `error.revert.args.length`);
|
||||
assert_1.default.equal(error.revert.args[0], code, `error.revert.args[0]`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
const customErrors = [
|
||||
{
|
||||
name: "CustomError1",
|
||||
signature: "testCustomError1(bool,uint256,string)",
|
||||
data: "0xdb7342480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
|
||||
//data: "0x852d0c740000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000",
|
||||
message: `execution reverted (unknown custom error)`,
|
||||
reason: null,
|
||||
revert: null,
|
||||
},
|
||||
{
|
||||
name: "Error",
|
||||
signature: "testErrorString(bool,string)",
|
||||
data: "0xb206699b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
|
||||
//data: "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000"
|
||||
message: `execution reverted: "hello world"`,
|
||||
reason: "hello world",
|
||||
revert: {
|
||||
signature: "Error(string)",
|
||||
name: "Error",
|
||||
args: ['hello world']
|
||||
}
|
||||
},
|
||||
];
|
||||
for (const { data, message, name, reason, revert } of customErrors) {
|
||||
for (const method of ["call", "estimateGas"]) {
|
||||
const tx = { to: testAddr, data };
|
||||
for (const providerName of create_provider_js_1.providerNames) {
|
||||
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
|
||||
if (provider == null) {
|
||||
continue;
|
||||
}
|
||||
// Shutdown socket-based provider, otherwise its socket will prevent
|
||||
// this process from exiting
|
||||
if (provider.destroy) {
|
||||
cleanup.push(() => { provider.destroy(); });
|
||||
}
|
||||
it(`tests custom errors: ${providerName}.${method}.${name}`, async function () {
|
||||
this.timeout(10000);
|
||||
try {
|
||||
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
|
||||
console.log(result);
|
||||
assert_1.default.ok(false, "panic call did not throw");
|
||||
}
|
||||
catch (error) {
|
||||
assert_1.default.ok((0, index_js_1.isCallException)(error), "isCallException");
|
||||
// Check some basics
|
||||
assert_1.default.equal(error.action, method, `error.action == ${method}`);
|
||||
assert_1.default.ok(error.message.startsWith(message), "error.message == message");
|
||||
if (reason) {
|
||||
assert_1.default.equal(error.reason, reason, "error.reason");
|
||||
}
|
||||
else {
|
||||
assert_1.default.ok(error.reason == null, "error.reason != null");
|
||||
}
|
||||
if (revert) {
|
||||
assert_1.default.ok(error.revert != null, "error.revert == null");
|
||||
assert_1.default.equal(error.revert.name, revert.name, "error.revert.name");
|
||||
assert_1.default.equal(error.revert.signature, revert.signature, "error.revert.signature");
|
||||
assert_1.default.equal(error.revert.args.length, revert.args.length, "error.revert.args.length");
|
||||
for (let i = 0; i < revert.args.length; i++) {
|
||||
assert_1.default.equal(error.revert.args[i], revert.args[i], `error.revert.args[${i}]`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
assert_1.default.ok(error.revert == null, "error.revert != null");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=test-providers-errors.js.map
|
1
lib.commonjs/_tests/test-providers-errors.js.map
Normal file
1
lib.commonjs/_tests/test-providers-errors.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const assert_1 = __importDefault(require("assert"));
|
||||
const create_provider_js_1 = require("./create-provider.js");
|
||||
describe("Test EIP-2544 ENS wildcards", function () {
|
||||
const provider = (0, create_provider_js_1.connect)("ropsten");
|
||||
const provider = (0, create_provider_js_1.connect)("goerli");
|
||||
it("Resolves recursively", async function () {
|
||||
const resolver = await provider.getResolver("ricmoose.hatch.eth");
|
||||
assert_1.default.ok(resolver, "failed to get resolver");
|
||||
assert_1.default.equal(resolver.address, "0x8fc4C380c5d539aE631daF3Ca9182b40FB21D1ae", "address");
|
||||
assert_1.default.equal(resolver.address, "0x15abA1fa74Bfdecd63A71218DC632d4328Db8168", "address");
|
||||
assert_1.default.equal(await resolver.supportsWildcard(), true, "supportsWildcard()");
|
||||
// Test pass-through avatar
|
||||
assert_1.default.equal(await resolver.getAvatar(), "https:/\/static.ricmoo.com/uploads/profile-06cb9c3031c9.jpg", "getAvatar()");
|
||||
assert_1.default.equal(await resolver.getAddress(), "0x4FaBE0A3a4DDd9968A7b4565184Ad0eFA7BE5411", "getAddress()");
|
||||
assert_1.default.equal(await resolver.getAddress(), "0x4B711A377B1b3534749FBe5e59Bcf7F94d92EA98", "getAddress()");
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=test-providers-wildcard.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;IAEpC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;IAEnC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.version = void 0;
|
||||
exports.version = "6.0.0-beta-exports.4";
|
||||
exports.version = "6.0.0-beta-exports.5";
|
||||
//# sourceMappingURL=_version.js.map
|
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.defaultAbiCoder = exports.AbiCoder = void 0;
|
||||
exports.defaultAbiCoder = exports.getBuiltinCallException = exports.AbiCoder = void 0;
|
||||
const index_js_1 = require("../utils/index.js");
|
||||
const abstract_coder_js_1 = require("./coders/abstract-coder.js");
|
||||
const address_js_1 = require("./coders/address.js");
|
||||
@ -14,6 +14,8 @@ const number_js_1 = require("./coders/number.js");
|
||||
const string_js_1 = require("./coders/string.js");
|
||||
const tuple_js_1 = require("./coders/tuple.js");
|
||||
const fragments_js_1 = require("./fragments.js");
|
||||
const index_js_2 = require("../address/index.js");
|
||||
const index_js_3 = require("../utils/index.js");
|
||||
const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
|
||||
const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
|
||||
class AbiCoder {
|
||||
@ -76,5 +78,78 @@ class AbiCoder {
|
||||
}
|
||||
}
|
||||
exports.AbiCoder = AbiCoder;
|
||||
// https://docs.soliditylang.org/en/v0.8.17/control-structures.html
|
||||
const PanicReasons = new Map();
|
||||
PanicReasons.set(0x00, "GENERIC_PANIC");
|
||||
PanicReasons.set(0x01, "ASSERT_FALSE");
|
||||
PanicReasons.set(0x11, "OVERFLOW");
|
||||
PanicReasons.set(0x12, "DIVIDE_BY_ZERO");
|
||||
PanicReasons.set(0x21, "ENUM_RANGE_ERROR");
|
||||
PanicReasons.set(0x22, "BAD_STORAGE_DATA");
|
||||
PanicReasons.set(0x31, "STACK_UNDERFLOW");
|
||||
PanicReasons.set(0x32, "ARRAY_RANGE_ERROR");
|
||||
PanicReasons.set(0x41, "OUT_OF_MEMORY");
|
||||
PanicReasons.set(0x51, "UNINITIALIZED_FUNCTION_CALL");
|
||||
function getBuiltinCallException(action, tx, data) {
|
||||
let message = "missing revert data";
|
||||
let reason = null;
|
||||
const invocation = null;
|
||||
let revert = null;
|
||||
if (data) {
|
||||
message = "execution reverted";
|
||||
const bytes = (0, index_js_3.getBytes)(data);
|
||||
data = (0, index_js_3.hexlify)(data);
|
||||
if (bytes.length % 32 !== 4) {
|
||||
message += " (could not decode reason; invalid data length)";
|
||||
}
|
||||
else if ((0, index_js_3.hexlify)(bytes.slice(0, 4)) === "0x08c379a0") {
|
||||
// Error(string)
|
||||
try {
|
||||
reason = exports.defaultAbiCoder.decode(["string"], bytes.slice(4))[0];
|
||||
revert = {
|
||||
signature: "Error(string)",
|
||||
name: "Error",
|
||||
args: [reason]
|
||||
};
|
||||
message += `: ${JSON.stringify(reason)}`;
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not decode reason; invalid data)";
|
||||
}
|
||||
}
|
||||
else if ((0, index_js_3.hexlify)(bytes.slice(0, 4)) === "0x4e487b71") {
|
||||
// Panic(uint256)
|
||||
try {
|
||||
const code = Number(exports.defaultAbiCoder.decode(["uint256"], bytes.slice(4))[0]);
|
||||
revert = {
|
||||
signature: "Panic(uint256)",
|
||||
name: "Panic",
|
||||
args: [code]
|
||||
};
|
||||
reason = `Panic due to ${PanicReasons.get(code) || "UNKNOWN"}(${code})`;
|
||||
message += `: ${reason}`;
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not decode panic reason)";
|
||||
}
|
||||
}
|
||||
else {
|
||||
message += " (unknown custom error)";
|
||||
}
|
||||
}
|
||||
const transaction = {
|
||||
to: (tx.to ? (0, index_js_2.getAddress)(tx.to) : null),
|
||||
data: (tx.data || "0x")
|
||||
};
|
||||
if (tx.from) {
|
||||
transaction.from = (0, index_js_2.getAddress)(tx.from);
|
||||
}
|
||||
return (0, index_js_3.makeError)(message, "CALL_EXCEPTION", {
|
||||
action, data, reason, transaction, invocation, revert
|
||||
});
|
||||
}
|
||||
exports.getBuiltinCallException = getBuiltinCallException;
|
||||
exports.defaultAbiCoder = new AbiCoder();
|
||||
//# sourceMappingURL=abi-coder.js.map
|
File diff suppressed because one or more lines are too long
@ -498,7 +498,7 @@ class ParamType {
|
||||
return value[param.name];
|
||||
});
|
||||
}
|
||||
if (value.length !== this.components.length) {
|
||||
if (result.length !== this.components.length) {
|
||||
throw new Error("array is wrong length");
|
||||
}
|
||||
result.forEach((value, index) => {
|
||||
@ -595,7 +595,7 @@ class ParamType {
|
||||
});
|
||||
return new ParamType(_guard, name, type, "array", indexed, null, arrayLength, arrayChildren);
|
||||
}
|
||||
if (type.substring(0, 5) === "tuple(" || type[0] === "(") {
|
||||
if (type === "tuple" || type.substring(0, 5) === "tuple(" || type[0] === "(") {
|
||||
const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;
|
||||
const tuple = new ParamType(_guard, name, type, "tuple", indexed, comps, null, null);
|
||||
// @TODO: use lexer to validate and normalize type
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,10 +1,11 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Typed = exports.Result = exports.TransactionDescription = exports.LogDescription = exports.ErrorDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.StructFragment = exports.ParamType = exports.NamedFragment = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.encodeBytes32String = exports.decodeBytes32String = exports.defaultAbiCoder = exports.AbiCoder = void 0;
|
||||
exports.Typed = exports.Result = exports.TransactionDescription = exports.LogDescription = exports.ErrorDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.StructFragment = exports.ParamType = exports.NamedFragment = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.encodeBytes32String = exports.decodeBytes32String = exports.getBuiltinCallException = exports.defaultAbiCoder = exports.AbiCoder = void 0;
|
||||
//////
|
||||
var abi_coder_js_1 = require("./abi-coder.js");
|
||||
Object.defineProperty(exports, "AbiCoder", { enumerable: true, get: function () { return abi_coder_js_1.AbiCoder; } });
|
||||
Object.defineProperty(exports, "defaultAbiCoder", { enumerable: true, get: function () { return abi_coder_js_1.defaultAbiCoder; } });
|
||||
Object.defineProperty(exports, "getBuiltinCallException", { enumerable: true, get: function () { return abi_coder_js_1.getBuiltinCallException; } });
|
||||
var bytes32_js_1 = require("./bytes32.js");
|
||||
Object.defineProperty(exports, "decodeBytes32String", { enumerable: true, get: function () { return bytes32_js_1.decodeBytes32String; } });
|
||||
Object.defineProperty(exports, "encodeBytes32String", { enumerable: true, get: function () { return bytes32_js_1.encodeBytes32String; } });
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":";;;AAGA,MAAM;AACN,+CAGwB;AAFpB,wGAAA,QAAQ,OAAA;AACR,+GAAA,eAAe,OAAA;AAGnB,2CAAwE;AAA/D,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAEjD,+CAGwB;AAFpB,mHAAA,mBAAmB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAC3D,gHAAA,gBAAgB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,yGAAA,SAAS,OAAA;AAAE,8GAAA,cAAc,OAAA;AAG9D,+CAMwB;AALpB,iHAAA,iBAAiB,OAAA;AACjB,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AACxD,sGAAA,MAAM,OAAA;AAGV,uCAAmC;AAA1B,iGAAA,KAAK,OAAA"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":";;;AAGA,MAAM;AACN,+CAIwB;AAHpB,wGAAA,QAAQ,OAAA;AACR,+GAAA,eAAe,OAAA;AACf,uHAAA,uBAAuB,OAAA;AAG3B,2CAAwE;AAA/D,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAEjD,+CAGwB;AAFpB,mHAAA,mBAAmB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAC3D,gHAAA,gBAAgB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,yGAAA,SAAS,OAAA;AAAE,8GAAA,cAAc,OAAA;AAG9D,+CAMwB;AALpB,iHAAA,iBAAiB,OAAA;AACjB,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AACxD,sGAAA,MAAM,OAAA;AAGV,uCAAmC;AAA1B,iGAAA,KAAK,OAAA"}
|
@ -578,65 +578,42 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
|
||||
info: { method: fragment.name, signature: fragment.format() }
|
||||
});
|
||||
}
|
||||
makeError(fragment, _data, tx) {
|
||||
if (typeof (fragment) === "string") {
|
||||
fragment = this.getFunction(fragment);
|
||||
}
|
||||
const data = (0, index_js_3.getBytes)(_data);
|
||||
let args = undefined;
|
||||
if (tx) {
|
||||
try {
|
||||
args = this.#abiCoder.decode(fragment.inputs, tx.data || "0x");
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
let errorArgs = undefined;
|
||||
let errorName = undefined;
|
||||
let errorSignature = undefined;
|
||||
let reason = "unknown reason";
|
||||
if (data.length === 0) {
|
||||
reason = "missing error reason";
|
||||
}
|
||||
else if ((data.length % 32) === 4) {
|
||||
makeError(_data, tx) {
|
||||
const data = (0, index_js_3.getBytes)(_data, "data");
|
||||
const error = (0, abi_coder_js_1.getBuiltinCallException)("call", tx, data);
|
||||
// Not a built-in error; try finding a custom error
|
||||
if (!error.message.match(/could not decode/)) {
|
||||
const selector = (0, index_js_3.hexlify)(data.slice(0, 4));
|
||||
const builtin = BuiltinErrors[selector];
|
||||
if (builtin) {
|
||||
error.message = "execution reverted (unknown custom error)";
|
||||
try {
|
||||
errorName = builtin.name;
|
||||
errorSignature = builtin.signature;
|
||||
errorArgs = this.#abiCoder.decode(builtin.inputs, data.slice(4));
|
||||
reason = builtin.reason(...errorArgs);
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error); // @TODO: remove
|
||||
}
|
||||
}
|
||||
else {
|
||||
reason = "unknown custom error";
|
||||
const ef = this.getError(selector);
|
||||
try {
|
||||
const error = this.getError(selector);
|
||||
errorName = error.name;
|
||||
errorSignature = error.format();
|
||||
reason = `custom error: ${errorSignature}`;
|
||||
try {
|
||||
errorArgs = this.#abiCoder.decode(error.inputs, data.slice(4));
|
||||
error.revert = {
|
||||
name: ef.name,
|
||||
signature: ef.format(),
|
||||
args: this.#abiCoder.decode(ef.inputs, data.slice(4))
|
||||
};
|
||||
error.reason = error.revert.signature;
|
||||
error.message = `execution reverted: ${error.reason}`;
|
||||
}
|
||||
catch (error) {
|
||||
reason = `custom error: ${errorSignature} (coult not decode error data)`;
|
||||
catch (e) {
|
||||
error.message = `execution reverted (coult not decode custom error)`;
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error); // @TODO: remove
|
||||
}
|
||||
}
|
||||
// Add the invocation, if available
|
||||
const parsed = this.parseTransaction(tx);
|
||||
if (parsed) {
|
||||
error.invocation = {
|
||||
method: parsed.name,
|
||||
signature: parsed.signature,
|
||||
args: parsed.args
|
||||
};
|
||||
}
|
||||
return (0, index_js_3.makeError)("call revert exception", "CALL_EXCEPTION", {
|
||||
data: (0, index_js_3.hexlify)(data), transaction: null,
|
||||
method: fragment.name, signature: fragment.format(), args,
|
||||
errorArgs, errorName, errorSignature, reason
|
||||
});
|
||||
return error;
|
||||
}
|
||||
/**
|
||||
* Encodes the result data (e.g. from an ``eth_call``) for the
|
||||
|
File diff suppressed because one or more lines are too long
@ -190,18 +190,18 @@ class WrappedMethod extends _WrappedMethodBase() {
|
||||
operation: "call"
|
||||
});
|
||||
}
|
||||
const fragment = this.getFragment(...args);
|
||||
const tx = await this.populateTransaction(...args);
|
||||
let result = "0x";
|
||||
try {
|
||||
result = await runner.call(tx);
|
||||
}
|
||||
catch (error) {
|
||||
if ((0, index_js_4.isCallException)(error)) {
|
||||
throw this._contract.interface.makeError(fragment, error.data, tx);
|
||||
if ((0, index_js_4.isCallException)(error) && error.data) {
|
||||
throw this._contract.interface.makeError(error.data, tx);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
const fragment = this.getFragment(...args);
|
||||
return this._contract.interface.decodeFunctionResult(fragment, result);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":";;AAeC,CAAC;AAiB4E,CAAC;AAkD9E,CAAC"}
|
||||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":";;AAeC,CAAC;AAoB4E,CAAC;AAkD9E,CAAC"}
|
@ -1,11 +1,11 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.computeHmac = void 0;
|
||||
const crypto_js_1 = require("./crypto.js");
|
||||
const crypto_browser_js_1 = require("./crypto-browser.js");
|
||||
const index_js_1 = require("../utils/index.js");
|
||||
let locked = false;
|
||||
const _computeHmac = function (algorithm, key, data) {
|
||||
return "0x" + (0, crypto_js_1.createHmac)(algorithm, key).update(data).digest("hex");
|
||||
return (0, crypto_browser_js_1.createHmac)(algorithm, key).update(data).digest();
|
||||
};
|
||||
let __computeHmac = _computeHmac;
|
||||
function computeHmac(algorithm, _key, _data) {
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AACzC,gDAAsD;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAI,GAAG,IAAA,sBAAU,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,SAAgB,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAA,kBAAO,EAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,kCAIC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
||||
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AACjD,gDAAsD;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAA,8BAAU,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,SAAgB,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAA,kBAAO,EAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,kCAIC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
@ -47,18 +47,7 @@ class Signature {
|
||||
return Signature.getChainId(v);
|
||||
}
|
||||
get yParity() {
|
||||
if (this.v === 27) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
/*
|
||||
// When v is 0 or 1 it is the recid directly
|
||||
if (this.v.isZero()) { return 0; }
|
||||
if (this.v.eq(1)) { return 1; }
|
||||
|
||||
// Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1
|
||||
return this.v.and(1).isZero() ? 1: 0;
|
||||
*/
|
||||
return (this.v === 27) ? 0 : 1;
|
||||
}
|
||||
get yParityAndS() {
|
||||
// The EIP-2098 compact representation
|
||||
@ -103,9 +92,9 @@ class Signature {
|
||||
r: this.r, s: this.s, v: this.v,
|
||||
};
|
||||
}
|
||||
static create() {
|
||||
return new Signature(_guard, index_js_1.ZeroHash, index_js_1.ZeroHash, 27);
|
||||
}
|
||||
//static create(): Signature {
|
||||
// return new Signature(_guard, ZeroHash, ZeroHash, 27);
|
||||
//}
|
||||
// Get the chain ID from an EIP-155 v
|
||||
static getChainId(v) {
|
||||
const bv = (0, index_js_2.getBigInt)(v, "v");
|
||||
@ -136,6 +125,9 @@ class Signature {
|
||||
return (bv & BN_1) ? 27 : 28;
|
||||
}
|
||||
static from(sig) {
|
||||
if (sig == null) {
|
||||
return new Signature(_guard, index_js_1.ZeroHash, index_js_1.ZeroHash, 27);
|
||||
}
|
||||
const throwError = (message) => {
|
||||
return (0, index_js_2.throwArgumentError)(message, "signature", sig);
|
||||
};
|
||||
@ -148,8 +140,8 @@ class Signature {
|
||||
s[0] &= 0x7f;
|
||||
return new Signature(_guard, r, (0, index_js_2.hexlify)(s), v);
|
||||
}
|
||||
if ((0, index_js_2.dataLength)(sig) !== 65) {
|
||||
const r = (0, index_js_2.hexlify)(sig.slice(0, 32));
|
||||
if (bytes.length === 65) {
|
||||
const r = (0, index_js_2.hexlify)(bytes.slice(0, 32));
|
||||
const s = bytes.slice(32, 64);
|
||||
if (s[0] & 0x80) {
|
||||
throwError("non-canonical s");
|
||||
|
File diff suppressed because one or more lines are too long
@ -48,9 +48,7 @@ class SigningKey {
|
||||
get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }
|
||||
get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }
|
||||
sign(digest) {
|
||||
/* @TODO
|
||||
logger.assertArgument(() => (dataLength(digest) === 32), "invalid digest length", "digest", digest);
|
||||
*/
|
||||
(0, index_js_1.assertArgument)((0, index_js_1.dataLength)(digest) === 32, "invalid digest length", "digest", digest);
|
||||
const [sigDer, recid] = secp256k1.signSync((0, index_js_1.getBytesCopy)(digest), (0, index_js_1.getBytesCopy)(this.#privateKey), {
|
||||
recovered: true,
|
||||
canonical: true
|
||||
@ -82,6 +80,7 @@ class SigningKey {
|
||||
return (0, index_js_1.hexlify)(point.toRawBytes(compressed));
|
||||
}
|
||||
static recoverPublicKey(digest, signature) {
|
||||
(0, index_js_1.assertArgument)((0, index_js_1.dataLength)(digest) === 32, "invalid digest length", "digest", digest);
|
||||
const sig = signature_js_1.Signature.from(signature);
|
||||
const der = secp256k1.Signature.fromCompact((0, index_js_1.getBytesCopy)((0, index_js_1.concat)([sig.r, sig.s]))).toDERRawBytes();
|
||||
const pubKey = secp256k1.recoverPublicKey((0, index_js_1.getBytesCopy)(digest), der, sig.yParity);
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}
|
@ -3,9 +3,9 @@
|
||||
//
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.scrypt = exports.pbkdf2 = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.keccak256 = exports.randomBytes = exports.computeHmac = exports.EventLog = exports.ContractTransactionResponse = exports.ContractTransactionReceipt = exports.ContractEventPayload = exports.ContractFactory = exports.Contract = exports.BaseContract = exports.MessagePrefix = exports.EtherSymbol = exports.ZeroHash = exports.N = exports.MaxInt256 = exports.MinInt256 = exports.MaxUint256 = exports.WeiPerEther = exports.Two = exports.One = exports.Zero = exports.NegativeOne = exports.ZeroAddress = exports.getCreate2Address = exports.getCreateAddress = exports.getIcapAddress = exports.getAddress = exports.Typed = exports.TransactionDescription = exports.Result = exports.LogDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.ParamType = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.defaultAbiCoder = exports.AbiCoder = exports.encodeBytes32String = exports.decodeBytes32String = exports.version = void 0;
|
||||
exports.assertPrivate = exports.assertNormalize = exports.assertArgumentCount = exports.assertArgument = exports.zeroPadValue = exports.zeroPadBytes = exports.stripZerosLeft = exports.isBytesLike = exports.isHexString = exports.hexlify = exports.getBytesCopy = exports.getBytes = exports.dataSlice = exports.dataLength = exports.concat = exports.encodeBase64 = exports.decodeBase64 = exports.encodeBase58 = exports.decodeBase58 = exports.Transaction = exports.recoverAddress = exports.computeAddress = exports.accessListify = exports.Network = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.AbstractProvider = exports.TypedDataEncoder = exports.solidityPackedSha256 = exports.solidityPackedKeccak256 = exports.solidityPacked = exports.hashMessage = exports.dnsEncode = exports.namehash = exports.isValidName = exports.id = exports.SigningKey = exports.Signature = exports.lock = exports.scryptSync = void 0;
|
||||
exports.LangEn = exports.langEn = exports.Wordlist = exports.Wallet = exports.Mnemonic = exports.encryptKeystoreJson = exports.decryptKeystoreJson = exports.decryptKeystoreJsonSync = exports.isKeystoreJson = exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = exports.HDNodeWalletManager = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.getAccountPath = exports.defaultPath = exports.encodeRlp = exports.decodeRlp = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = exports.parseUnits = exports.formatUnits = exports.parseEther = exports.formatEther = exports.mask = exports.toTwos = exports.fromTwos = exports.toQuantity = exports.toNumber = exports.toHex = exports.toBigInt = exports.toArray = exports.getNumber = exports.getBigInt = exports.parseFixed = exports.formatFixed = exports.FixedNumber = exports.FixedFormat = exports.FetchCancelSignal = exports.FetchResponse = exports.FetchRequest = exports.getIpfsGatewayFunc = exports.isError = exports.isCallException = exports.throwError = exports.throwArgumentError = exports.makeError = void 0;
|
||||
exports.WordlistOwlA = exports.WordlistOwl = exports.wordlists = void 0;
|
||||
exports.assertNormalize = exports.assertArgumentCount = exports.assertArgument = exports.zeroPadValue = exports.zeroPadBytes = exports.stripZerosLeft = exports.isBytesLike = exports.isHexString = exports.hexlify = exports.getBytesCopy = exports.getBytes = exports.dataSlice = exports.dataLength = exports.concat = exports.encodeBase64 = exports.decodeBase64 = exports.encodeBase58 = exports.decodeBase58 = exports.Transaction = exports.recoverAddress = exports.computeAddress = exports.accessListify = exports.Network = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.BrowserProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.AbstractProvider = exports.TypedDataEncoder = exports.solidityPackedSha256 = exports.solidityPackedKeccak256 = exports.solidityPacked = exports.hashMessage = exports.dnsEncode = exports.namehash = exports.isValidName = exports.id = exports.SigningKey = exports.Signature = exports.lock = exports.scryptSync = void 0;
|
||||
exports.langEn = exports.Wordlist = exports.Wallet = exports.Mnemonic = exports.encryptKeystoreJson = exports.decryptKeystoreJson = exports.decryptKeystoreJsonSync = exports.isKeystoreJson = exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = exports.HDNodeWalletManager = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.getAccountPath = exports.defaultPath = exports.encodeRlp = exports.decodeRlp = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = exports.parseUnits = exports.formatUnits = exports.parseEther = exports.formatEther = exports.mask = exports.toTwos = exports.fromTwos = exports.toQuantity = exports.toNumber = exports.toHex = exports.toBigInt = exports.toArray = exports.getNumber = exports.getBigInt = exports.parseFixed = exports.formatFixed = exports.FixedNumber = exports.FixedFormat = exports.FetchCancelSignal = exports.FetchResponse = exports.FetchRequest = exports.getIpfsGatewayFunc = exports.isError = exports.isCallException = exports.throwError = exports.throwArgumentError = exports.makeError = exports.assertPrivate = void 0;
|
||||
exports.WordlistOwlA = exports.WordlistOwl = exports.wordlists = exports.LangEn = void 0;
|
||||
var _version_js_1 = require("./_version.js");
|
||||
Object.defineProperty(exports, "version", { enumerable: true, get: function () { return _version_js_1.version; } });
|
||||
var index_js_1 = require("./abi/index.js");
|
||||
@ -82,6 +82,7 @@ Object.defineProperty(exports, "FallbackProvider", { enumerable: true, get: func
|
||||
Object.defineProperty(exports, "JsonRpcApiProvider", { enumerable: true, get: function () { return index_js_7.JsonRpcApiProvider; } });
|
||||
Object.defineProperty(exports, "JsonRpcProvider", { enumerable: true, get: function () { return index_js_7.JsonRpcProvider; } });
|
||||
Object.defineProperty(exports, "JsonRpcSigner", { enumerable: true, get: function () { return index_js_7.JsonRpcSigner; } });
|
||||
Object.defineProperty(exports, "BrowserProvider", { enumerable: true, get: function () { return index_js_7.BrowserProvider; } });
|
||||
Object.defineProperty(exports, "AlchemyProvider", { enumerable: true, get: function () { return index_js_7.AlchemyProvider; } });
|
||||
Object.defineProperty(exports, "AnkrProvider", { enumerable: true, get: function () { return index_js_7.AnkrProvider; } });
|
||||
Object.defineProperty(exports, "CloudflareProvider", { enumerable: true, get: function () { return index_js_7.CloudflareProvider; } });
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}
|
@ -9,7 +9,8 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AbstractProvider = exports.UnmanagedSubscriber = void 0;
|
||||
const index_js_1 = require("../address/index.js");
|
||||
const index_js_2 = require("../utils/index.js");
|
||||
const index_js_2 = require("../transaction/index.js");
|
||||
const index_js_3 = require("../utils/index.js");
|
||||
const ens_resolver_js_1 = require("./ens-resolver.js");
|
||||
const format_js_1 = require("./format.js");
|
||||
const network_js_1 = require("./network.js");
|
||||
@ -43,7 +44,7 @@ function getTag(prefix, value) {
|
||||
}
|
||||
class UnmanagedSubscriber {
|
||||
name;
|
||||
constructor(name) { (0, index_js_2.defineProperties)(this, { name }); }
|
||||
constructor(name) { (0, index_js_3.defineProperties)(this, { name }); }
|
||||
start() { }
|
||||
stop() { }
|
||||
pause(dropWhilePaused) { }
|
||||
@ -76,7 +77,7 @@ async function getSubscription(_event, provider) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((0, index_js_2.isHexString)(_event, 32)) {
|
||||
if ((0, index_js_3.isHexString)(_event, 32)) {
|
||||
const hash = _event.toLowerCase();
|
||||
return { type: "transaction", tag: getTag("tx", { hash }), hash };
|
||||
}
|
||||
@ -102,7 +103,7 @@ async function getSubscription(_event, provider) {
|
||||
const addresses = [];
|
||||
const promises = [];
|
||||
const addAddress = (addr) => {
|
||||
if ((0, index_js_2.isHexString)(addr)) {
|
||||
if ((0, index_js_3.isHexString)(addr)) {
|
||||
addresses.push(addr);
|
||||
}
|
||||
else {
|
||||
@ -124,7 +125,7 @@ async function getSubscription(_event, provider) {
|
||||
}
|
||||
return { filter, tag: getTag("event", filter), type: "event" };
|
||||
}
|
||||
return (0, index_js_2.throwArgumentError)("unknown ProviderEvent", "event", _event);
|
||||
return (0, index_js_3.throwArgumentError)("unknown ProviderEvent", "event", _event);
|
||||
}
|
||||
function getTime() { return (new Date()).getTime(); }
|
||||
class AbstractProvider {
|
||||
@ -215,7 +216,7 @@ class AbstractProvider {
|
||||
// value.status = response.statusCode;
|
||||
// return value;
|
||||
//});
|
||||
const request = new index_js_2.FetchRequest(href);
|
||||
const request = new index_js_3.FetchRequest(href);
|
||||
if (url.indexOf("{data}") === -1) {
|
||||
request.body = { data, sender };
|
||||
}
|
||||
@ -233,7 +234,7 @@ class AbstractProvider {
|
||||
catch (error) { }
|
||||
// 4xx indicates the result is not present; stop
|
||||
if (resp.statusCode >= 400 && resp.statusCode < 500) {
|
||||
return (0, index_js_2.throwError)(`response not found during CCIP fetch: ${errorMessage}`, "OFFCHAIN_FAULT", {
|
||||
return (0, index_js_3.throwError)(`response not found during CCIP fetch: ${errorMessage}`, "OFFCHAIN_FAULT", {
|
||||
reason: "404_MISSING_RESOURCE",
|
||||
transaction: tx, info: { url, errorMessage }
|
||||
});
|
||||
@ -241,7 +242,7 @@ class AbstractProvider {
|
||||
// 5xx indicates server issue; try the next url
|
||||
errorMessages.push(errorMessage);
|
||||
}
|
||||
return (0, index_js_2.throwError)(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(", ")}`, "OFFCHAIN_FAULT", {
|
||||
return (0, index_js_3.throwError)(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(", ")}`, "OFFCHAIN_FAULT", {
|
||||
reason: "500_SERVER_ERROR",
|
||||
transaction: tx, info: { urls, errorMessages }
|
||||
});
|
||||
@ -262,21 +263,21 @@ class AbstractProvider {
|
||||
return new provider_js_1.TransactionResponse(tx, this);
|
||||
}
|
||||
_detectNetwork() {
|
||||
return (0, index_js_2.throwError)("sub-classes must implement this", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_3.throwError)("sub-classes must implement this", "UNSUPPORTED_OPERATION", {
|
||||
operation: "_detectNetwork"
|
||||
});
|
||||
}
|
||||
// Sub-classes should override this and handle PerformActionRequest requests, calling
|
||||
// the super for any unhandled actions.
|
||||
async _perform(req) {
|
||||
return (0, index_js_2.throwError)(`unsupported method: ${req.method}`, "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_3.throwError)(`unsupported method: ${req.method}`, "UNSUPPORTED_OPERATION", {
|
||||
operation: req.method,
|
||||
info: req
|
||||
});
|
||||
}
|
||||
// State
|
||||
async getBlockNumber() {
|
||||
const blockNumber = (0, index_js_2.getNumber)(await this.#perform({ method: "getBlockNumber" }), "%response");
|
||||
const blockNumber = (0, index_js_3.getNumber)(await this.#perform({ method: "getBlockNumber" }), "%response");
|
||||
if (this.#lastBlockNumber >= 0) {
|
||||
this.#lastBlockNumber = blockNumber;
|
||||
}
|
||||
@ -298,22 +299,22 @@ class AbstractProvider {
|
||||
case "finalized":
|
||||
return blockTag;
|
||||
}
|
||||
if ((0, index_js_2.isHexString)(blockTag)) {
|
||||
if ((0, index_js_2.dataLength)(blockTag) === 32) {
|
||||
if ((0, index_js_3.isHexString)(blockTag)) {
|
||||
if ((0, index_js_3.dataLength)(blockTag) === 32) {
|
||||
return blockTag;
|
||||
}
|
||||
return (0, index_js_2.toQuantity)(blockTag);
|
||||
return (0, index_js_3.toQuantity)(blockTag);
|
||||
}
|
||||
if (typeof (blockTag) === "number") {
|
||||
if (blockTag >= 0) {
|
||||
return (0, index_js_2.toQuantity)(blockTag);
|
||||
return (0, index_js_3.toQuantity)(blockTag);
|
||||
}
|
||||
if (this.#lastBlockNumber >= 0) {
|
||||
return (0, index_js_2.toQuantity)(this.#lastBlockNumber + blockTag);
|
||||
return (0, index_js_3.toQuantity)(this.#lastBlockNumber + blockTag);
|
||||
}
|
||||
return this.getBlockNumber().then((b) => (0, index_js_2.toQuantity)(b + blockTag));
|
||||
return this.getBlockNumber().then((b) => (0, index_js_3.toQuantity)(b + blockTag));
|
||||
}
|
||||
return (0, index_js_2.throwArgumentError)("invalid blockTag", "blockTag", blockTag);
|
||||
return (0, index_js_3.throwArgumentError)("invalid blockTag", "blockTag", blockTag);
|
||||
}
|
||||
_getFilter(filter) {
|
||||
// Create a canonical representation of the topics
|
||||
@ -455,7 +456,7 @@ class AbstractProvider {
|
||||
}
|
||||
else {
|
||||
// Otherwise, we do not allow changes to the underlying network
|
||||
(0, index_js_2.throwError)(`network changed: ${expected.chainId} => ${actual.chainId} `, "NETWORK_ERROR", {
|
||||
(0, index_js_3.throwError)(`network changed: ${expected.chainId} => ${actual.chainId} `, "NETWORK_ERROR", {
|
||||
event: "changed"
|
||||
});
|
||||
}
|
||||
@ -463,12 +464,12 @@ class AbstractProvider {
|
||||
return expected.clone();
|
||||
}
|
||||
async getFeeData() {
|
||||
const { block, gasPrice } = await (0, index_js_2.resolveProperties)({
|
||||
const { block, gasPrice } = await (0, index_js_3.resolveProperties)({
|
||||
block: this.getBlock("latest"),
|
||||
gasPrice: ((async () => {
|
||||
try {
|
||||
const gasPrice = await this.#perform({ method: "getGasPrice" });
|
||||
return (0, index_js_2.getBigInt)(gasPrice, "%response");
|
||||
return (0, index_js_3.getBigInt)(gasPrice, "%response");
|
||||
}
|
||||
catch (error) { }
|
||||
return null;
|
||||
@ -494,13 +495,13 @@ class AbstractProvider {
|
||||
if (isPromise(tx)) {
|
||||
tx = await tx;
|
||||
}
|
||||
return (0, index_js_2.getBigInt)(await this.#perform({
|
||||
return (0, index_js_3.getBigInt)(await this.#perform({
|
||||
method: "estimateGas", transaction: tx
|
||||
}), "%response");
|
||||
}
|
||||
async #call(tx, blockTag, attempt) {
|
||||
if (attempt >= MAX_CCIP_REDIRECTS) {
|
||||
(0, index_js_2.throwError)("CCIP read exceeded maximum redirections", "OFFCHAIN_FAULT", {
|
||||
(0, index_js_3.throwError)("CCIP read exceeded maximum redirections", "OFFCHAIN_FAULT", {
|
||||
reason: "TOO_MANY_REDIRECTS",
|
||||
transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })
|
||||
});
|
||||
@ -508,43 +509,49 @@ class AbstractProvider {
|
||||
// This came in as a PerformActionTransaction, so to/from are safe; we can cast
|
||||
const transaction = (0, provider_js_1.copyRequest)(tx);
|
||||
try {
|
||||
return (0, index_js_2.hexlify)(await this._perform({ method: "call", transaction, blockTag }));
|
||||
return (0, index_js_3.hexlify)(await this._perform({ method: "call", transaction, blockTag }));
|
||||
}
|
||||
catch (error) {
|
||||
// CCIP Read OffchainLookup
|
||||
if (!this.disableCcipRead && (0, index_js_2.isCallException)(error) && attempt >= 0 && blockTag === "latest" && transaction.to != null && (0, index_js_2.dataSlice)(error.data, 0, 4) === "0x556f1830") {
|
||||
if (!this.disableCcipRead && (0, index_js_3.isCallException)(error) && error.data && attempt >= 0 && blockTag === "latest" && transaction.to != null && (0, index_js_3.dataSlice)(error.data, 0, 4) === "0x556f1830") {
|
||||
const data = error.data;
|
||||
const txSender = await (0, index_js_1.resolveAddress)(transaction.to, this);
|
||||
// Parse the CCIP Read Arguments
|
||||
let ccipArgs;
|
||||
try {
|
||||
ccipArgs = parseOffchainLookup((0, index_js_2.dataSlice)(error.data, 4));
|
||||
ccipArgs = parseOffchainLookup((0, index_js_3.dataSlice)(error.data, 4));
|
||||
}
|
||||
catch (error) {
|
||||
return (0, index_js_2.throwError)(error.message, "OFFCHAIN_FAULT", {
|
||||
return (0, index_js_3.throwError)(error.message, "OFFCHAIN_FAULT", {
|
||||
reason: "BAD_DATA",
|
||||
transaction, info: { data }
|
||||
});
|
||||
}
|
||||
// Check the sender of the OffchainLookup matches the transaction
|
||||
if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {
|
||||
return (0, index_js_2.throwError)("CCIP Read sender mismatch", "CALL_EXCEPTION", {
|
||||
data, transaction,
|
||||
errorSignature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
|
||||
errorName: "OffchainLookup",
|
||||
errorArgs: ccipArgs.errorArgs
|
||||
return (0, index_js_3.throwError)("CCIP Read sender mismatch", "CALL_EXCEPTION", {
|
||||
action: "call",
|
||||
data,
|
||||
reason: "OffchainLookup",
|
||||
transaction: transaction,
|
||||
invocation: null,
|
||||
revert: {
|
||||
signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
|
||||
name: "OffchainLookup",
|
||||
args: ccipArgs.errorArgs
|
||||
}
|
||||
});
|
||||
}
|
||||
const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);
|
||||
if (ccipResult == null) {
|
||||
return (0, index_js_2.throwError)("CCIP Read failed to fetch data", "OFFCHAIN_FAULT", {
|
||||
return (0, index_js_3.throwError)("CCIP Read failed to fetch data", "OFFCHAIN_FAULT", {
|
||||
reason: "FETCH_FAILED",
|
||||
transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }
|
||||
});
|
||||
}
|
||||
return this.#call({
|
||||
to: txSender,
|
||||
data: (0, index_js_2.concat)([
|
||||
data: (0, index_js_3.concat)([
|
||||
ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])
|
||||
]),
|
||||
}, blockTag, attempt + 1);
|
||||
@ -553,14 +560,14 @@ class AbstractProvider {
|
||||
}
|
||||
}
|
||||
async #checkNetwork(promise) {
|
||||
const { value } = await (0, index_js_2.resolveProperties)({
|
||||
const { value } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
value: promise
|
||||
});
|
||||
return value;
|
||||
}
|
||||
async call(_tx) {
|
||||
const { tx, blockTag } = await (0, index_js_2.resolveProperties)({
|
||||
const { tx, blockTag } = await (0, index_js_3.resolveProperties)({
|
||||
tx: this._getTransactionRequest(_tx),
|
||||
blockTag: this._getBlockTag(_tx.blockTag)
|
||||
});
|
||||
@ -576,26 +583,37 @@ class AbstractProvider {
|
||||
return await this.#checkNetwork(this.#perform(Object.assign(request, { address, blockTag })));
|
||||
}
|
||||
async getBalance(address, blockTag) {
|
||||
return (0, index_js_2.getBigInt)(await this.#getAccountValue({ method: "getBalance" }, address, blockTag), "%response");
|
||||
return (0, index_js_3.getBigInt)(await this.#getAccountValue({ method: "getBalance" }, address, blockTag), "%response");
|
||||
}
|
||||
async getTransactionCount(address, blockTag) {
|
||||
return (0, index_js_2.getNumber)(await this.#getAccountValue({ method: "getTransactionCount" }, address, blockTag), "%response");
|
||||
return (0, index_js_3.getNumber)(await this.#getAccountValue({ method: "getTransactionCount" }, address, blockTag), "%response");
|
||||
}
|
||||
async getCode(address, blockTag) {
|
||||
return (0, index_js_2.hexlify)(await this.#getAccountValue({ method: "getCode" }, address, blockTag));
|
||||
return (0, index_js_3.hexlify)(await this.#getAccountValue({ method: "getCode" }, address, blockTag));
|
||||
}
|
||||
async getStorage(address, _position, blockTag) {
|
||||
const position = (0, index_js_2.getBigInt)(_position, "position");
|
||||
return (0, index_js_2.hexlify)(await this.#getAccountValue({ method: "getStorage", position }, address, blockTag));
|
||||
const position = (0, index_js_3.getBigInt)(_position, "position");
|
||||
return (0, index_js_3.hexlify)(await this.#getAccountValue({ method: "getStorage", position }, address, blockTag));
|
||||
}
|
||||
// Write
|
||||
async broadcastTransaction(signedTx) {
|
||||
throw new Error();
|
||||
return {};
|
||||
const { blockNumber, hash, network } = await (0, index_js_3.resolveProperties)({
|
||||
blockNumber: this.getBlockNumber(),
|
||||
hash: this._perform({
|
||||
method: "broadcastTransaction",
|
||||
signedTransaction: signedTx
|
||||
}),
|
||||
network: this.getNetwork()
|
||||
});
|
||||
const tx = index_js_2.Transaction.from(signedTx);
|
||||
if (tx.hash !== hash) {
|
||||
throw new Error("@TODO: the returned hash did not match");
|
||||
}
|
||||
return this._wrapTransactionResponse(tx, network).replaceableTransaction(blockNumber);
|
||||
}
|
||||
async #getBlock(block, includeTransactions) {
|
||||
// @TODO: Add CustomBlockPlugin check
|
||||
if ((0, index_js_2.isHexString)(block, 32)) {
|
||||
if ((0, index_js_3.isHexString)(block, 32)) {
|
||||
return await this.#perform({
|
||||
method: "getBlock", blockHash: block, includeTransactions
|
||||
});
|
||||
@ -610,7 +628,7 @@ class AbstractProvider {
|
||||
}
|
||||
// Queries
|
||||
async getBlock(block) {
|
||||
const { network, params } = await (0, index_js_2.resolveProperties)({
|
||||
const { network, params } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
params: this.#getBlock(block, false)
|
||||
});
|
||||
@ -620,7 +638,7 @@ class AbstractProvider {
|
||||
return this._wrapBlock((0, format_js_1.formatBlock)(params), network);
|
||||
}
|
||||
async getBlockWithTransactions(block) {
|
||||
const { network, params } = await (0, index_js_2.resolveProperties)({
|
||||
const { network, params } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
params: this.#getBlock(block, true)
|
||||
});
|
||||
@ -630,7 +648,7 @@ class AbstractProvider {
|
||||
return this._wrapBlockWithTransactions((0, format_js_1.formatBlockWithTransactions)(params), network);
|
||||
}
|
||||
async getTransaction(hash) {
|
||||
const { network, params } = await (0, index_js_2.resolveProperties)({
|
||||
const { network, params } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
params: this.#perform({ method: "getTransaction", hash })
|
||||
});
|
||||
@ -640,7 +658,7 @@ class AbstractProvider {
|
||||
return this._wrapTransactionResponse((0, format_js_1.formatTransactionResponse)(params), network);
|
||||
}
|
||||
async getTransactionReceipt(hash) {
|
||||
const { network, params } = await (0, index_js_2.resolveProperties)({
|
||||
const { network, params } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
params: this.#perform({ method: "getTransactionReceipt", hash })
|
||||
});
|
||||
@ -659,14 +677,14 @@ class AbstractProvider {
|
||||
return this._wrapTransactionReceipt((0, format_js_1.formatTransactionReceipt)(params), network);
|
||||
}
|
||||
async getTransactionResult(hash) {
|
||||
const { result } = await (0, index_js_2.resolveProperties)({
|
||||
const { result } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
result: this.#perform({ method: "getTransactionResult", hash })
|
||||
});
|
||||
if (result == null) {
|
||||
return null;
|
||||
}
|
||||
return (0, index_js_2.hexlify)(result);
|
||||
return (0, index_js_3.hexlify)(result);
|
||||
}
|
||||
// Bloom-filter Queries
|
||||
async getLogs(_filter) {
|
||||
@ -674,7 +692,7 @@ class AbstractProvider {
|
||||
if (isPromise(filter)) {
|
||||
filter = await filter;
|
||||
}
|
||||
const { network, params } = await (0, index_js_2.resolveProperties)({
|
||||
const { network, params } = await (0, index_js_3.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
params: this.#perform({ method: "getLogs", filter })
|
||||
});
|
||||
@ -682,7 +700,7 @@ class AbstractProvider {
|
||||
}
|
||||
// ENS
|
||||
_getProvider(chainId) {
|
||||
return (0, index_js_2.throwError)("provider cannot connect to target network", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_3.throwError)("provider cannot connect to target network", "UNSUPPORTED_OPERATION", {
|
||||
operation: "_getProvider()"
|
||||
});
|
||||
}
|
||||
@ -697,7 +715,7 @@ class AbstractProvider {
|
||||
return null;
|
||||
}
|
||||
async resolveName(name) {
|
||||
if ((0, index_js_2.isHexString)(name, 20)) {
|
||||
if ((0, index_js_3.isHexString)(name, 20)) {
|
||||
return name;
|
||||
}
|
||||
//if (typeof(name) === "string") {
|
||||
@ -753,7 +771,7 @@ class AbstractProvider {
|
||||
}
|
||||
timer = null;
|
||||
this.off("block", listener);
|
||||
reject((0, index_js_2.makeError)("timeout", "TIMEOUT", { reason: "timeout" }));
|
||||
reject((0, index_js_3.makeError)("timeout", "TIMEOUT", { reason: "timeout" }));
|
||||
}, timeout);
|
||||
}
|
||||
listener(await this.getBlockNumber());
|
||||
@ -883,7 +901,7 @@ class AbstractProvider {
|
||||
;
|
||||
const count = sub.listeners.length;
|
||||
sub.listeners = sub.listeners.filter(({ listener, once }) => {
|
||||
const payload = new index_js_2.EventPayload(this, (once ? null : listener), event);
|
||||
const payload = new index_js_3.EventPayload(this, (once ? null : listener), event);
|
||||
try {
|
||||
listener.call(this, ...args, payload);
|
||||
}
|
||||
@ -993,7 +1011,7 @@ class AbstractProvider {
|
||||
if (this.#pausedState == !!dropWhilePaused) {
|
||||
return;
|
||||
}
|
||||
return (0, index_js_2.throwError)("cannot change pause type; resume first", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_3.throwError)("cannot change pause type; resume first", "UNSUPPORTED_OPERATION", {
|
||||
operation: "pause"
|
||||
});
|
||||
}
|
||||
@ -1032,7 +1050,7 @@ function _parseString(result, start) {
|
||||
try {
|
||||
const bytes = _parseBytes(result, start);
|
||||
if (bytes) {
|
||||
return (0, index_js_2.toUtf8String)(bytes);
|
||||
return (0, index_js_3.toUtf8String)(bytes);
|
||||
}
|
||||
}
|
||||
catch (error) { }
|
||||
@ -1043,15 +1061,15 @@ function _parseBytes(result, start) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const offset = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(result, start, start + 32));
|
||||
const length = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(result, offset, offset + 32));
|
||||
return (0, index_js_2.dataSlice)(result, offset + 32, offset + 32 + length);
|
||||
const offset = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(result, start, start + 32));
|
||||
const length = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(result, offset, offset + 32));
|
||||
return (0, index_js_3.dataSlice)(result, offset + 32, offset + 32 + length);
|
||||
}
|
||||
catch (error) { }
|
||||
return null;
|
||||
}
|
||||
function numPad(value) {
|
||||
const result = (0, index_js_2.toArray)(value);
|
||||
const result = (0, index_js_3.toArray)(value);
|
||||
if (result.length > 32) {
|
||||
throw new Error("internal; should not happen");
|
||||
}
|
||||
@ -1078,7 +1096,7 @@ function encodeBytes(datas) {
|
||||
byteCount += 32;
|
||||
}
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
const data = (0, index_js_2.getBytes)(datas[i]);
|
||||
const data = (0, index_js_3.getBytes)(datas[i]);
|
||||
// Update the bytes offset
|
||||
result[i] = numPad(byteCount);
|
||||
// The length and padded value of data
|
||||
@ -1086,27 +1104,27 @@ function encodeBytes(datas) {
|
||||
result.push(bytesPad(data));
|
||||
byteCount += 32 + Math.ceil(data.length / 32) * 32;
|
||||
}
|
||||
return (0, index_js_2.concat)(result);
|
||||
return (0, index_js_3.concat)(result);
|
||||
}
|
||||
const zeros = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
||||
function parseOffchainLookup(data) {
|
||||
const result = {
|
||||
sender: "", urls: [], calldata: "", selector: "", extraData: "", errorArgs: []
|
||||
};
|
||||
if ((0, index_js_2.dataLength)(data) < 5 * 32) {
|
||||
if ((0, index_js_3.dataLength)(data) < 5 * 32) {
|
||||
throw new Error("insufficient OffchainLookup data");
|
||||
}
|
||||
const sender = (0, index_js_2.dataSlice)(data, 0, 32);
|
||||
if ((0, index_js_2.dataSlice)(sender, 0, 12) !== (0, index_js_2.dataSlice)(zeros, 0, 12)) {
|
||||
const sender = (0, index_js_3.dataSlice)(data, 0, 32);
|
||||
if ((0, index_js_3.dataSlice)(sender, 0, 12) !== (0, index_js_3.dataSlice)(zeros, 0, 12)) {
|
||||
throw new Error("corrupt OffchainLookup sender");
|
||||
}
|
||||
result.sender = (0, index_js_2.dataSlice)(sender, 12);
|
||||
result.sender = (0, index_js_3.dataSlice)(sender, 12);
|
||||
// Read the URLs from the response
|
||||
try {
|
||||
const urls = [];
|
||||
const urlsOffset = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(data, 32, 64));
|
||||
const urlsLength = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(data, urlsOffset, urlsOffset + 32));
|
||||
const urlsData = (0, index_js_2.dataSlice)(data, urlsOffset + 32);
|
||||
const urlsOffset = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(data, 32, 64));
|
||||
const urlsLength = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(data, urlsOffset, urlsOffset + 32));
|
||||
const urlsData = (0, index_js_3.dataSlice)(data, urlsOffset + 32);
|
||||
for (let u = 0; u < urlsLength; u++) {
|
||||
const url = _parseString(urlsData, u * 32);
|
||||
if (url == null) {
|
||||
@ -1131,10 +1149,10 @@ function parseOffchainLookup(data) {
|
||||
throw new Error("corrupt OffchainLookup calldata");
|
||||
}
|
||||
// Get the callbackSelector (bytes4)
|
||||
if ((0, index_js_2.dataSlice)(data, 100, 128) !== (0, index_js_2.dataSlice)(zeros, 0, 28)) {
|
||||
if ((0, index_js_3.dataSlice)(data, 100, 128) !== (0, index_js_3.dataSlice)(zeros, 0, 28)) {
|
||||
throw new Error("corrupt OffchainLookup callbaackSelector");
|
||||
}
|
||||
result.selector = (0, index_js_2.dataSlice)(data, 96, 100);
|
||||
result.selector = (0, index_js_3.dataSlice)(data, 96, 100);
|
||||
// Get the extra data to send back to the contract as context
|
||||
try {
|
||||
const extraData = _parseBytes(data, 128);
|
||||
|
File diff suppressed because one or more lines are too long
@ -41,14 +41,14 @@ class AbstractSigner {
|
||||
return address;
|
||||
});
|
||||
}
|
||||
return pop;
|
||||
return { pop: await (0, index_js_2.resolveProperties)(pop), provider };
|
||||
}
|
||||
async populateCall(tx) {
|
||||
const pop = await this.#populate("populateCall", tx);
|
||||
const { pop } = await this.#populate("populateCall", tx);
|
||||
return pop;
|
||||
}
|
||||
async populateTransaction(tx) {
|
||||
const pop = await this.#populate("populateTransaction", tx);
|
||||
const { pop, provider } = await this.#populate("populateTransaction", tx);
|
||||
if (pop.nonce == null) {
|
||||
pop.nonce = await this.getNonce("pending");
|
||||
}
|
||||
@ -66,10 +66,95 @@ class AbstractSigner {
|
||||
else {
|
||||
pop.chainId = network.chainId;
|
||||
}
|
||||
// Do not allow mixing pre-eip-1559 and eip-1559 properties
|
||||
const hasEip1559 = (pop.maxFeePerGas != null || pop.maxPriorityFeePerGas != null);
|
||||
if (pop.gasPrice != null && (pop.type === 2 || hasEip1559)) {
|
||||
(0, index_js_2.throwArgumentError)("eip-1559 transaction do not support gasPrice", "tx", tx);
|
||||
}
|
||||
else if ((pop.type === 0 || pop.type === 1) && hasEip1559) {
|
||||
(0, index_js_2.throwArgumentError)("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas", "tx", tx);
|
||||
}
|
||||
if ((pop.type === 2 || pop.type == null) && (pop.maxFeePerGas != null && pop.maxPriorityFeePerGas != null)) {
|
||||
// Fully-formed EIP-1559 transaction (skip getFeeData)
|
||||
pop.type = 2;
|
||||
}
|
||||
else if (pop.type === 0 || pop.type === 1) {
|
||||
// Explicit Legacy or EIP-2930 transaction
|
||||
// We need to get fee data to determine things
|
||||
const feeData = await provider.getFeeData();
|
||||
if (feeData.gasPrice == null) {
|
||||
(0, index_js_2.throwError)("network does not support gasPrice", "UNSUPPORTED_OPERATION", {
|
||||
operation: "getGasPrice"
|
||||
});
|
||||
}
|
||||
// Populate missing gasPrice
|
||||
if (pop.gasPrice == null) {
|
||||
pop.gasPrice = feeData.gasPrice;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// We need to get fee data to determine things
|
||||
const feeData = await provider.getFeeData();
|
||||
if (pop.type == null) {
|
||||
// We need to auto-detect the intended type of this transaction...
|
||||
if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {
|
||||
// The network supports EIP-1559!
|
||||
// Upgrade transaction from null to eip-1559
|
||||
pop.type = 2;
|
||||
if (pop.gasPrice != null) {
|
||||
// Using legacy gasPrice property on an eip-1559 network,
|
||||
// so use gasPrice as both fee properties
|
||||
const gasPrice = pop.gasPrice;
|
||||
delete pop.gasPrice;
|
||||
pop.maxFeePerGas = gasPrice;
|
||||
pop.maxPriorityFeePerGas = gasPrice;
|
||||
}
|
||||
else {
|
||||
// Populate missing fee data
|
||||
if (pop.maxFeePerGas == null) {
|
||||
pop.maxFeePerGas = feeData.maxFeePerGas;
|
||||
}
|
||||
if (pop.maxPriorityFeePerGas == null) {
|
||||
pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (feeData.gasPrice != null) {
|
||||
// Network doesn't support EIP-1559...
|
||||
// ...but they are trying to use EIP-1559 properties
|
||||
if (hasEip1559) {
|
||||
(0, index_js_2.throwError)("network does not support EIP-1559", "UNSUPPORTED_OPERATION", {
|
||||
operation: "populateTransaction"
|
||||
});
|
||||
}
|
||||
// Populate missing fee data
|
||||
if (pop.gasPrice == null) {
|
||||
pop.gasPrice = feeData.gasPrice;
|
||||
}
|
||||
// Explicitly set untyped transaction to legacy
|
||||
// @TODO: Maybe this shold allow type 1?
|
||||
pop.type = 0;
|
||||
}
|
||||
else {
|
||||
// getFeeData has failed us.
|
||||
(0, index_js_2.throwError)("failed to get consistent fee data", "UNSUPPORTED_OPERATION", {
|
||||
operation: "signer.getFeeData"
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (pop.type === 2) {
|
||||
// Explicitly using EIP-1559
|
||||
// Populate missing fee data
|
||||
if (pop.maxFeePerGas == null) {
|
||||
pop.maxFeePerGas = feeData.maxFeePerGas;
|
||||
}
|
||||
if (pop.maxPriorityFeePerGas == null) {
|
||||
pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
|
||||
}
|
||||
}
|
||||
}
|
||||
//@TOOD: Don't await all over the place; save them up for
|
||||
// the end for better batching
|
||||
//@TODO: Copy type logic from AbstractSigner in v5
|
||||
// Test how many batches is actually sent for sending a tx; compare before/after
|
||||
return await (0, index_js_2.resolveProperties)(pop);
|
||||
}
|
||||
async estimateGas(tx) {
|
||||
@ -84,7 +169,8 @@ class AbstractSigner {
|
||||
}
|
||||
async sendTransaction(tx) {
|
||||
const provider = this.#checkProvider("sendTransaction");
|
||||
const txObj = index_js_1.Transaction.from(await this.populateTransaction(tx));
|
||||
const pop = await this.populateTransaction(tx);
|
||||
const txObj = index_js_1.Transaction.from(pop);
|
||||
return await provider.broadcastTransaction(await this.signTransaction(txObj));
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,81 +0,0 @@
|
||||
"use strict";
|
||||
/**
|
||||
* Exports the same Network as "./network.js" except with common
|
||||
* networks injected registered.
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Network = exports.injectCommonNetworks = void 0;
|
||||
const plugins_network_js_1 = require("./plugins-network.js");
|
||||
const provider_etherscan_base_js_1 = require("./provider-etherscan-base.js");
|
||||
const network_js_1 = require("./network.js");
|
||||
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return network_js_1.Network; } });
|
||||
// See: https://chainlist.org
|
||||
function injectCommonNetworks() {
|
||||
/// Register popular Ethereum networks
|
||||
function registerEth(name, chainId, options) {
|
||||
const func = function () {
|
||||
const network = new network_js_1.Network(name, chainId);
|
||||
// We use 0 to disable ENS
|
||||
if (options.ensNetwork != null) {
|
||||
network.attachPlugin(new plugins_network_js_1.EnsPlugin(null, options.ensNetwork));
|
||||
}
|
||||
if (options.priorityFee) {
|
||||
// network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));
|
||||
}
|
||||
if (options.etherscan) {
|
||||
const { url, apiKey } = options.etherscan;
|
||||
network.attachPlugin(new provider_etherscan_base_js_1.EtherscanPlugin(url, apiKey));
|
||||
}
|
||||
network.attachPlugin(new plugins_network_js_1.GasCostPlugin());
|
||||
return network;
|
||||
};
|
||||
// Register the network by name and chain ID
|
||||
network_js_1.Network.register(name, func);
|
||||
network_js_1.Network.register(chainId, func);
|
||||
if (options.altNames) {
|
||||
options.altNames.forEach((name) => {
|
||||
network_js_1.Network.register(name, func);
|
||||
});
|
||||
}
|
||||
}
|
||||
registerEth("mainnet", 1, { ensNetwork: 1, altNames: ["homestead"] });
|
||||
registerEth("ropsten", 3, { ensNetwork: 3 });
|
||||
registerEth("rinkeby", 4, { ensNetwork: 4 });
|
||||
registerEth("goerli", 5, { ensNetwork: 5 });
|
||||
registerEth("kovan", 42, { ensNetwork: 42 });
|
||||
registerEth("classic", 61, {});
|
||||
registerEth("classicKotti", 6, {});
|
||||
registerEth("xdai", 100, { ensNetwork: 1 });
|
||||
// Polygon has a 35 gwei maxPriorityFee requirement
|
||||
registerEth("matic", 137, {
|
||||
ensNetwork: 1,
|
||||
// priorityFee: 35000000000,
|
||||
etherscan: {
|
||||
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
|
||||
url: "https:/\/api.polygonscan.com/"
|
||||
}
|
||||
});
|
||||
registerEth("maticMumbai", 80001, {
|
||||
// priorityFee: 35000000000,
|
||||
etherscan: {
|
||||
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
|
||||
url: "https:/\/api-testnet.polygonscan.com/"
|
||||
}
|
||||
});
|
||||
registerEth("bnb", 56, {
|
||||
ensNetwork: 1,
|
||||
etherscan: {
|
||||
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
|
||||
url: "http:/\/api.bscscan.com"
|
||||
}
|
||||
});
|
||||
registerEth("bnbt", 97, {
|
||||
etherscan: {
|
||||
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
|
||||
url: "http:/\/api-testnet.bscscan.com"
|
||||
}
|
||||
});
|
||||
}
|
||||
exports.injectCommonNetworks = injectCommonNetworks;
|
||||
injectCommonNetworks();
|
||||
//# sourceMappingURL=common-networks.js.map
|
@ -1 +0,0 @@
|
||||
{"version":3,"file":"common-networks.js","sourceRoot":"","sources":["../../src.ts/providers/common-networks.ts"],"names":[],"mappings":";AACA;;;GAGG;;;AAEH,6DAAgE;AAChE,6EAA+D;AAE/D,6CAAuC;AA4F9B,wFA5FA,oBAAO,OA4FA;AAnFhB,6BAA6B;AAC7B,SAAgB,oBAAoB;IAEhC,sCAAsC;IACtC,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,OAAgB;QAChE,MAAM,IAAI,GAAG;YACT,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAE3C,0BAA0B;YAC1B,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;gBAC5B,OAAO,CAAC,YAAY,CAAC,IAAI,8BAAS,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;aACjE;YAED,IAAI,OAAO,CAAC,WAAW,EAAE;gBACrC,sFAAsF;aACzE;YAED,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC1C,OAAO,CAAC,YAAY,CAAC,IAAI,4CAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;aAC1D;YAED,OAAO,CAAC,YAAY,CAAC,IAAI,kCAAa,EAAE,CAAC,CAAC;YAE1C,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;QAEF,4CAA4C;QAC5C,oBAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,oBAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,oBAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAE,WAAW,CAAE,EAAE,CAAC,CAAC;IACxE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7C,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7C,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7C,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,EAAG,CAAC,CAAC;IAChC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,EAAG,CAAC,CAAC;IAEpC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAE5C,mDAAmD;IACnD,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;QACtB,UAAU,EAAE,CAAC;QACrB,mCAAmC;QAC3B,SAAS,EAAE;YACP,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,+BAA+B;SACvC;KACJ,CAAC,CAAC;IACH,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE;QACtC,mCAAmC;QAC3B,SAAS,EAAE;YACP,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,uCAAuC;SAC/C;KACJ,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE;QACnB,UAAU,EAAE,CAAC;QACb,SAAS,EAAE;YACP,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,yBAAyB;SACjC;KACJ,CAAC,CAAC;IACH,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE;QACpB,SAAS,EAAE;YACP,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,iCAAiC;SACzC;KACJ,CAAC,CAAC;AACP,CAAC;AA9ED,oDA8EC;AAED,oBAAoB,EAAE,CAAC"}
|
@ -2,31 +2,31 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.EnsResolver = exports.BasicMulticoinProviderPlugin = exports.MulticoinProviderPlugin = void 0;
|
||||
const index_js_1 = require("../address/index.js");
|
||||
const hashes_js_1 = require("../constants/hashes.js");
|
||||
const index_js_2 = require("../hash/index.js");
|
||||
const index_js_3 = require("../utils/index.js");
|
||||
const index_js_2 = require("../constants/index.js");
|
||||
const index_js_3 = require("../hash/index.js");
|
||||
const index_js_4 = require("../utils/index.js");
|
||||
const BN_1 = BigInt(1);
|
||||
const Empty = new Uint8Array([]);
|
||||
function parseBytes(result, start) {
|
||||
if (result === "0x") {
|
||||
return null;
|
||||
}
|
||||
const offset = (0, index_js_3.toNumber)((0, index_js_3.dataSlice)(result, start, start + 32));
|
||||
const length = (0, index_js_3.toNumber)((0, index_js_3.dataSlice)(result, offset, offset + 32));
|
||||
return (0, index_js_3.dataSlice)(result, offset + 32, offset + 32 + length);
|
||||
const offset = (0, index_js_4.toNumber)((0, index_js_4.dataSlice)(result, start, start + 32));
|
||||
const length = (0, index_js_4.toNumber)((0, index_js_4.dataSlice)(result, offset, offset + 32));
|
||||
return (0, index_js_4.dataSlice)(result, offset + 32, offset + 32 + length);
|
||||
}
|
||||
function parseString(result, start) {
|
||||
try {
|
||||
const bytes = parseBytes(result, start);
|
||||
if (bytes != null) {
|
||||
return (0, index_js_3.toUtf8String)(bytes);
|
||||
return (0, index_js_4.toUtf8String)(bytes);
|
||||
}
|
||||
}
|
||||
catch (error) { }
|
||||
return null;
|
||||
}
|
||||
function numPad(value) {
|
||||
const result = (0, index_js_3.toArray)(value);
|
||||
const result = (0, index_js_4.toArray)(value);
|
||||
if (result.length > 32) {
|
||||
throw new Error("internal; should not happen");
|
||||
}
|
||||
@ -52,7 +52,7 @@ function encodeBytes(datas) {
|
||||
byteCount += 32;
|
||||
}
|
||||
for (let i = 0; i < datas.length; i++) {
|
||||
const data = (0, index_js_3.getBytes)(datas[i]);
|
||||
const data = (0, index_js_4.getBytes)(datas[i]);
|
||||
// Update the bytes offset
|
||||
result[i] = numPad(byteCount);
|
||||
// The length and padded value of data
|
||||
@ -60,11 +60,11 @@ function encodeBytes(datas) {
|
||||
result.push(bytesPad(data));
|
||||
byteCount += 32 + Math.ceil(data.length / 32) * 32;
|
||||
}
|
||||
return (0, index_js_3.concat)(result);
|
||||
return (0, index_js_4.concat)(result);
|
||||
}
|
||||
function callAddress(value) {
|
||||
if (value.length !== 66 || (0, index_js_3.dataSlice)(value, 0, 12) !== "0x000000000000000000000000") {
|
||||
(0, index_js_3.throwArgumentError)("invalid call address", "value", value);
|
||||
if (value.length !== 66 || (0, index_js_4.dataSlice)(value, 0, 12) !== "0x000000000000000000000000") {
|
||||
(0, index_js_4.throwArgumentError)("invalid call address", "value", value);
|
||||
}
|
||||
return (0, index_js_1.getAddress)("0x" + value.substring(26));
|
||||
}
|
||||
@ -78,7 +78,7 @@ function getIpfsLink(link) {
|
||||
link = link.substring(7);
|
||||
}
|
||||
else {
|
||||
(0, index_js_3.throwArgumentError)("unsupported IPFS format", "link", link);
|
||||
(0, index_js_4.throwArgumentError)("unsupported IPFS format", "link", link);
|
||||
}
|
||||
return `https:/\/gateway.ipfs.io/ipfs/${link}`;
|
||||
}
|
||||
@ -87,7 +87,7 @@ function getIpfsLink(link) {
|
||||
class MulticoinProviderPlugin {
|
||||
name;
|
||||
constructor(name) {
|
||||
(0, index_js_3.defineProperties)(this, { name });
|
||||
(0, index_js_4.defineProperties)(this, { name });
|
||||
}
|
||||
validate(proivder) {
|
||||
return this;
|
||||
@ -124,7 +124,7 @@ class EnsResolver {
|
||||
// For EIP-2544 names, the ancestor that provided the resolver
|
||||
#supports2544;
|
||||
constructor(provider, address, name) {
|
||||
(0, index_js_3.defineProperties)(this, { provider, address, name });
|
||||
(0, index_js_4.defineProperties)(this, { provider, address, name });
|
||||
this.#supports2544 = null;
|
||||
}
|
||||
async supportsWildcard() {
|
||||
@ -134,7 +134,7 @@ class EnsResolver {
|
||||
to: this.address,
|
||||
data: "0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"
|
||||
}).then((result) => {
|
||||
return ((0, index_js_3.getBigInt)(result) === BN_1);
|
||||
return ((0, index_js_4.getBigInt)(result) === BN_1);
|
||||
}).catch((error) => {
|
||||
if (error.code === "CALL_EXCEPTION") {
|
||||
return false;
|
||||
@ -148,9 +148,10 @@ class EnsResolver {
|
||||
}
|
||||
async _fetch(selector, parameters = "0x") {
|
||||
// e.g. keccak256("addr(bytes32,uint256)")
|
||||
const addrData = (0, index_js_3.concat)([selector, (0, index_js_2.namehash)(this.name), parameters]);
|
||||
const addrData = (0, index_js_4.concat)([selector, (0, index_js_3.namehash)(this.name), parameters]);
|
||||
const tx = {
|
||||
to: this.address,
|
||||
from: index_js_2.ZeroAddress,
|
||||
enableCcipRead: true,
|
||||
data: addrData
|
||||
};
|
||||
@ -159,13 +160,14 @@ class EnsResolver {
|
||||
if (await this.supportsWildcard()) {
|
||||
wrapped = true;
|
||||
// selector("resolve(bytes,bytes)")
|
||||
tx.data = (0, index_js_3.concat)(["0x9061b923", encodeBytes([(0, index_js_2.dnsEncode)(this.name), addrData])]);
|
||||
tx.data = (0, index_js_4.concat)(["0x9061b923", encodeBytes([(0, index_js_3.dnsEncode)(this.name), addrData])]);
|
||||
}
|
||||
try {
|
||||
let data = await this.provider.call(tx);
|
||||
if (((0, index_js_3.getBytes)(data).length % 32) === 4) {
|
||||
return (0, index_js_3.throwError)("resolver threw error", "CALL_EXCEPTION", {
|
||||
transaction: tx, data
|
||||
if (((0, index_js_4.getBytes)(data).length % 32) === 4) {
|
||||
return (0, index_js_4.throwError)("execution reverted during JSON-RPC call (could not parse reason; invalid data length)", "CALL_EXCEPTION", {
|
||||
action: "call", data, reason: null, transaction: tx,
|
||||
invocation: null, revert: null
|
||||
});
|
||||
}
|
||||
if (wrapped) {
|
||||
@ -186,7 +188,7 @@ class EnsResolver {
|
||||
// keccak256("addr(bytes32)")
|
||||
const result = await this._fetch("0x3b3b57de");
|
||||
// No address
|
||||
if (result == null || result === "0x" || result === hashes_js_1.ZeroHash) {
|
||||
if (result == null || result === "0x" || result === index_js_2.ZeroHash) {
|
||||
return null;
|
||||
}
|
||||
return callAddress(result);
|
||||
@ -222,22 +224,22 @@ class EnsResolver {
|
||||
if (address != null) {
|
||||
return address;
|
||||
}
|
||||
return (0, index_js_3.throwError)(`invalid coin data`, "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_4.throwError)(`invalid coin data`, "UNSUPPORTED_OPERATION", {
|
||||
operation: `getAddress(${coinType})`,
|
||||
info: { coinType, data }
|
||||
});
|
||||
}
|
||||
async getText(key) {
|
||||
// The key encoded as parameter to fetchBytes
|
||||
let keyBytes = (0, index_js_3.toUtf8Bytes)(key);
|
||||
let keyBytes = (0, index_js_4.toUtf8Bytes)(key);
|
||||
// The nodehash consumes the first slot, so the string pointer targets
|
||||
// offset 64, with the length at offset 64 and data starting at offset 96
|
||||
const calldata = (0, index_js_3.getBytes)((0, index_js_3.concat)([numPad(64), numPad(keyBytes.length), keyBytes]));
|
||||
const calldata = (0, index_js_4.getBytes)((0, index_js_4.concat)([numPad(64), numPad(keyBytes.length), keyBytes]));
|
||||
const hexBytes = parseBytes((await this._fetch("0x59d1d43c", bytesPad(calldata))) || "0x", 0);
|
||||
if (hexBytes == null || hexBytes === "0x") {
|
||||
return null;
|
||||
}
|
||||
return (0, index_js_3.toUtf8String)(hexBytes);
|
||||
return (0, index_js_4.toUtf8String)(hexBytes);
|
||||
}
|
||||
async getContentHash() {
|
||||
// keccak256("contenthash()")
|
||||
@ -252,7 +254,7 @@ class EnsResolver {
|
||||
const scheme = (ipfs[1] === "e3010170") ? "ipfs" : "ipns";
|
||||
const length = parseInt(ipfs[4], 16);
|
||||
if (ipfs[5].length === length * 2) {
|
||||
return `${scheme}:/\/${(0, index_js_3.encodeBase58)("0x" + ipfs[2])}`;
|
||||
return `${scheme}:/\/${(0, index_js_4.encodeBase58)("0x" + ipfs[2])}`;
|
||||
}
|
||||
}
|
||||
// Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)
|
||||
@ -260,7 +262,7 @@ class EnsResolver {
|
||||
if (swarm && swarm[1].length === 64) {
|
||||
return `bzz:/\/${swarm[1]}`;
|
||||
}
|
||||
return (0, index_js_3.throwError)(`invalid or unsupported content hash data`, "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_4.throwError)(`invalid or unsupported content hash data`, "UNSUPPORTED_OPERATION", {
|
||||
operation: "getContentHash()",
|
||||
info: { data: hexBytes }
|
||||
});
|
||||
@ -318,7 +320,7 @@ class EnsResolver {
|
||||
if (scheme === "erc721") {
|
||||
// ownerOf(uint256 tokenId)
|
||||
const tokenOwner = callAddress(await this.provider.call({
|
||||
to: addr, data: (0, index_js_3.concat)(["0x6352211e", tokenId])
|
||||
to: addr, data: (0, index_js_4.concat)(["0x6352211e", tokenId])
|
||||
}));
|
||||
if (owner !== tokenOwner) {
|
||||
linkage.push({ type: "!owner", value: tokenOwner });
|
||||
@ -328,8 +330,8 @@ class EnsResolver {
|
||||
}
|
||||
else if (scheme === "erc1155") {
|
||||
// balanceOf(address owner, uint256 tokenId)
|
||||
const balance = (0, index_js_3.getBigInt)(await this.provider.call({
|
||||
to: addr, data: (0, index_js_3.concat)(["0x00fdd58e", (0, index_js_3.zeroPadValue)(owner, 32), tokenId])
|
||||
const balance = (0, index_js_4.getBigInt)(await this.provider.call({
|
||||
to: addr, data: (0, index_js_4.concat)(["0x00fdd58e", (0, index_js_4.zeroPadValue)(owner, 32), tokenId])
|
||||
}));
|
||||
if (!balance) {
|
||||
linkage.push({ type: "!balance", value: "0" });
|
||||
@ -340,7 +342,7 @@ class EnsResolver {
|
||||
// Call the token contract for the metadata URL
|
||||
const tx = {
|
||||
to: comps[0],
|
||||
data: (0, index_js_3.concat)([selector, tokenId])
|
||||
data: (0, index_js_4.concat)([selector, tokenId])
|
||||
};
|
||||
let metadataUrl = parseString(await this.provider.call(tx), 0);
|
||||
if (metadataUrl == null) {
|
||||
@ -350,7 +352,7 @@ class EnsResolver {
|
||||
linkage.push({ type: "metadata-url-base", value: metadataUrl });
|
||||
// ERC-1155 allows a generic {id} in the URL
|
||||
if (scheme === "erc1155") {
|
||||
metadataUrl = metadataUrl.replace("{id}", (0, index_js_3.hexlify)(tokenId).substring(2));
|
||||
metadataUrl = metadataUrl.replace("{id}", (0, index_js_4.hexlify)(tokenId).substring(2));
|
||||
linkage.push({ type: "metadata-url-expanded", value: metadataUrl });
|
||||
}
|
||||
// Transform IPFS metadata links
|
||||
@ -360,7 +362,7 @@ class EnsResolver {
|
||||
linkage.push({ type: "metadata-url", value: metadataUrl });
|
||||
// Get the token metadata
|
||||
let metadata = {};
|
||||
const response = await (new index_js_3.FetchRequest(metadataUrl)).send();
|
||||
const response = await (new index_js_4.FetchRequest(metadataUrl)).send();
|
||||
response.assertOk();
|
||||
try {
|
||||
metadata = response.bodyJson;
|
||||
@ -372,7 +374,7 @@ class EnsResolver {
|
||||
catch (error) {
|
||||
const bytes = response.body;
|
||||
if (bytes) {
|
||||
linkage.push({ type: "!metadata", value: (0, index_js_3.hexlify)(bytes) });
|
||||
linkage.push({ type: "!metadata", value: (0, index_js_4.hexlify)(bytes) });
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
@ -418,7 +420,7 @@ class EnsResolver {
|
||||
const ensPlugin = network.getPlugin("org.ethers.network-plugins.ens");
|
||||
// No ENS...
|
||||
if (!ensPlugin) {
|
||||
return (0, index_js_3.throwError)("network does not support ENS", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_4.throwError)("network does not support ENS", "UNSUPPORTED_OPERATION", {
|
||||
operation: "getResolver", info: { network: network.name }
|
||||
});
|
||||
}
|
||||
@ -426,11 +428,11 @@ class EnsResolver {
|
||||
// keccak256("resolver(bytes32)")
|
||||
const addrData = await provider.call({
|
||||
to: ensPlugin.address,
|
||||
data: (0, index_js_3.concat)(["0x0178b8bf", (0, index_js_2.namehash)(name)]),
|
||||
data: (0, index_js_4.concat)(["0x0178b8bf", (0, index_js_3.namehash)(name)]),
|
||||
enableCcipRead: true
|
||||
});
|
||||
const addr = callAddress(addrData);
|
||||
if (addr === (0, index_js_3.dataSlice)(hashes_js_1.ZeroHash, 0, 20)) {
|
||||
if (addr === (0, index_js_4.dataSlice)(index_js_2.ZeroHash, 0, 20)) {
|
||||
return null;
|
||||
}
|
||||
return addr;
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
/////
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.SocketEventSubscriber = exports.SocketPendingSubscriber = exports.SocketBlockSubscriber = exports.SocketSubscriber = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.EtherscanPlugin = exports.BaseEtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.copyRequest = exports.TransactionResponse = exports.TransactionReceipt = exports.Log = exports.FeeData = exports.Block = exports.EnsPlugin = exports.GasCostPlugin = exports.NetworkPlugin = exports.Network = exports.WrappedSigner = exports.VoidSigner = exports.AbstractSigner = exports.UnmanagedSubscriber = exports.AbstractProvider = void 0;
|
||||
exports.SocketEventSubscriber = exports.SocketPendingSubscriber = exports.SocketBlockSubscriber = exports.SocketSubscriber = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.EtherscanPlugin = exports.BaseEtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.BrowserProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.copyRequest = exports.TransactionResponse = exports.TransactionReceipt = exports.Log = exports.FeeData = exports.Block = exports.EnsPlugin = exports.GasCostPlugin = exports.NetworkPlugin = exports.Network = exports.WrappedSigner = exports.VoidSigner = exports.AbstractSigner = exports.UnmanagedSubscriber = exports.AbstractProvider = void 0;
|
||||
var abstract_provider_js_1 = require("./abstract-provider.js");
|
||||
Object.defineProperty(exports, "AbstractProvider", { enumerable: true, get: function () { return abstract_provider_js_1.AbstractProvider; } });
|
||||
Object.defineProperty(exports, "UnmanagedSubscriber", { enumerable: true, get: function () { return abstract_provider_js_1.UnmanagedSubscriber; } });
|
||||
@ -18,8 +18,8 @@ export { getDefaultProvider } from "./default-provider.js";
|
||||
|
||||
export { EnsResolver } from "./ens-resolver.js";
|
||||
*/
|
||||
var common_networks_js_1 = require("./common-networks.js");
|
||||
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return common_networks_js_1.Network; } });
|
||||
var network_js_1 = require("./network.js");
|
||||
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return network_js_1.Network; } });
|
||||
var plugins_network_js_1 = require("./plugins-network.js");
|
||||
Object.defineProperty(exports, "NetworkPlugin", { enumerable: true, get: function () { return plugins_network_js_1.NetworkPlugin; } });
|
||||
Object.defineProperty(exports, "GasCostPlugin", { enumerable: true, get: function () { return plugins_network_js_1.GasCostPlugin; } });
|
||||
@ -37,6 +37,8 @@ var provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");
|
||||
Object.defineProperty(exports, "JsonRpcApiProvider", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcApiProvider; } });
|
||||
Object.defineProperty(exports, "JsonRpcProvider", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcProvider; } });
|
||||
Object.defineProperty(exports, "JsonRpcSigner", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcSigner; } });
|
||||
var provider_browser_js_1 = require("./provider-browser.js");
|
||||
Object.defineProperty(exports, "BrowserProvider", { enumerable: true, get: function () { return provider_browser_js_1.BrowserProvider; } });
|
||||
var provider_alchemy_js_1 = require("./provider-alchemy.js");
|
||||
Object.defineProperty(exports, "AlchemyProvider", { enumerable: true, get: function () { return provider_alchemy_js_1.AlchemyProvider; } });
|
||||
var provider_ankr_js_1 = require("./provider-ankr.js");
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/providers/index.ts"],"names":[],"mappings":";AAGA,KAAK;;;AAEL,+DAEgC;AAD5B,wHAAA,gBAAgB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAGzC,2DAI8B;AAH1B,oHAAA,cAAc,OAAA;AACd,gHAAA,UAAU,OAAA;AACV,mHAAA,aAAa,OAAA;AAEjB;;;;;;;;EAQE;AAEF,2DAA+C;AAAtC,6GAAA,OAAO,OAAA;AAEhB,2DAO8B;AAN1B,mHAAA,aAAa,OAAA;AACb,mHAAA,aAAa,OAAA;AACb,+GAAA,SAAS,OAAA;AAMb,6CASuB;AARnB,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,kGAAA,GAAG,OAAA;AACH,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AAEnB,0GAAA,WAAW,OAAA;AAIf,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,6DAA0F;AAAjF,yHAAA,kBAAkB,OAAA;AAAE,sHAAA,eAAe,OAAA;AAAE,oHAAA,aAAa,OAAA;AAE3D,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,2EAAsF;AAA7E,mIAAA,qBAAqB,OAAA;AAAE,6HAAA,eAAe,OAAA;AAC/C,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,wDAAwD;AAExD,mEAA4D,CAAC,YAAY;AAChE,kGADA,yCAAiB,OACA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAE1B,2DAG8B;AAF1B,sHAAA,gBAAgB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAChE,2HAAA,qBAAqB,OAAA"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/providers/index.ts"],"names":[],"mappings":";AAGA,KAAK;;;AAEL,+DAEgC;AAD5B,wHAAA,gBAAgB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAGzC,2DAI8B;AAH1B,oHAAA,cAAc,OAAA;AACd,gHAAA,UAAU,OAAA;AACV,mHAAA,aAAa,OAAA;AAEjB;;;;;;;;EAQE;AAEF,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAEhB,2DAO8B;AAN1B,mHAAA,aAAa,OAAA;AACb,mHAAA,aAAa,OAAA;AACb,+GAAA,SAAS,OAAA;AAMb,6CASuB;AARnB,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,kGAAA,GAAG,OAAA;AACH,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AAEnB,0GAAA,WAAW,OAAA;AAIf,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,6DAA0F;AAAjF,yHAAA,kBAAkB,OAAA;AAAE,sHAAA,eAAe,OAAA;AAAE,oHAAA,aAAa,OAAA;AAE3D,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AAExB,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,2EAAsF;AAA7E,mIAAA,qBAAqB,OAAA;AAAE,6HAAA,eAAe,OAAA;AAC/C,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,wDAAwD;AAExD,mEAA4D,CAAC,YAAY;AAChE,kGADA,yCAAiB,OACA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAE1B,2DAG8B;AAF1B,sHAAA,gBAAgB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAChE,2HAAA,qBAAqB,OAAA"}
|
@ -132,6 +132,7 @@ class Network {
|
||||
* Returns a new Network for the %%network%% name or chainId.
|
||||
*/
|
||||
static from(network) {
|
||||
injectCommonNetworks();
|
||||
// Default network
|
||||
if (network == null) {
|
||||
return Network.from("mainnet");
|
||||
@ -189,4 +190,78 @@ class Network {
|
||||
}
|
||||
}
|
||||
exports.Network = Network;
|
||||
// See: https://chainlist.org
|
||||
let injected = false;
|
||||
function injectCommonNetworks() {
|
||||
if (injected) {
|
||||
return;
|
||||
}
|
||||
injected = true;
|
||||
/// Register popular Ethereum networks
|
||||
function registerEth(name, chainId, options) {
|
||||
const func = function () {
|
||||
const network = new Network(name, chainId);
|
||||
// We use 0 to disable ENS
|
||||
if (options.ensNetwork != null) {
|
||||
network.attachPlugin(new plugins_network_js_1.EnsPlugin(null, options.ensNetwork));
|
||||
}
|
||||
if (options.priorityFee) {
|
||||
// network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));
|
||||
}
|
||||
/*
|
||||
if (options.etherscan) {
|
||||
const { url, apiKey } = options.etherscan;
|
||||
network.attachPlugin(new EtherscanPlugin(url, apiKey));
|
||||
}
|
||||
*/
|
||||
network.attachPlugin(new plugins_network_js_1.GasCostPlugin());
|
||||
return network;
|
||||
};
|
||||
// Register the network by name and chain ID
|
||||
Network.register(name, func);
|
||||
Network.register(chainId, func);
|
||||
if (options.altNames) {
|
||||
options.altNames.forEach((name) => {
|
||||
Network.register(name, func);
|
||||
});
|
||||
}
|
||||
}
|
||||
registerEth("mainnet", 1, { ensNetwork: 1, altNames: ["homestead"] });
|
||||
registerEth("ropsten", 3, { ensNetwork: 3 });
|
||||
registerEth("rinkeby", 4, { ensNetwork: 4 });
|
||||
registerEth("goerli", 5, { ensNetwork: 5 });
|
||||
registerEth("kovan", 42, { ensNetwork: 42 });
|
||||
registerEth("classic", 61, {});
|
||||
registerEth("classicKotti", 6, {});
|
||||
registerEth("xdai", 100, { ensNetwork: 1 });
|
||||
// Polygon has a 35 gwei maxPriorityFee requirement
|
||||
registerEth("matic", 137, {
|
||||
ensNetwork: 1,
|
||||
// priorityFee: 35000000000,
|
||||
etherscan: {
|
||||
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
|
||||
url: "https:/\/api.polygonscan.com/"
|
||||
}
|
||||
});
|
||||
registerEth("maticMumbai", 80001, {
|
||||
// priorityFee: 35000000000,
|
||||
etherscan: {
|
||||
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
|
||||
url: "https:/\/api-testnet.polygonscan.com/"
|
||||
}
|
||||
});
|
||||
registerEth("bnb", 56, {
|
||||
ensNetwork: 1,
|
||||
etherscan: {
|
||||
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
|
||||
url: "http:/\/api.bscscan.com"
|
||||
}
|
||||
});
|
||||
registerEth("bnbt", 97, {
|
||||
etherscan: {
|
||||
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
|
||||
url: "http:/\/api-testnet.bscscan.com"
|
||||
}
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=network.js.map
|
File diff suppressed because one or more lines are too long
@ -10,26 +10,20 @@ function getHost(name) {
|
||||
switch (name) {
|
||||
case "mainnet":
|
||||
return "eth-mainnet.alchemyapi.io";
|
||||
case "ropsten":
|
||||
return "eth-ropsten.alchemyapi.io";
|
||||
case "rinkeby":
|
||||
return "eth-rinkeby.alchemyapi.io";
|
||||
case "goerli":
|
||||
return "eth-goerli.alchemyapi.io";
|
||||
case "kovan":
|
||||
return "eth-kovan.alchemyapi.io";
|
||||
return "eth-goerli.g.alchemy.com";
|
||||
case "arbitrum":
|
||||
return "arb-mainnet.g.alchemy.com";
|
||||
case "arbitrum-goerli":
|
||||
return "arb-goerli.g.alchemy.com";
|
||||
case "matic":
|
||||
return "polygon-mainnet.g.alchemy.com";
|
||||
case "maticmum":
|
||||
return "polygon-mumbai.g.alchemy.com";
|
||||
case "arbitrum":
|
||||
return "arb-mainnet.g.alchemy.com";
|
||||
case "arbitrum-rinkeby":
|
||||
return "arb-rinkeby.g.alchemy.com";
|
||||
case "optimism":
|
||||
return "opt-mainnet.g.alchemy.com";
|
||||
case "optimism-kovan":
|
||||
return "opt-kovan.g.alchemy.com";
|
||||
case "optimism-goerli":
|
||||
return "opt-goerli.g.alchemy.com";
|
||||
}
|
||||
return (0, index_js_1.throwArgumentError)("unsupported network", "network", name);
|
||||
}
|
||||
@ -54,8 +48,11 @@ class AlchemyProvider extends provider_jsonrpc_js_1.JsonRpcProvider {
|
||||
async _perform(req) {
|
||||
// https://docs.alchemy.com/reference/trace-transaction
|
||||
if (req.method === "getTransactionResult") {
|
||||
const trace = await this.send("trace_transaction", [req.hash]);
|
||||
if (trace == null) {
|
||||
const { trace, tx } = await (0, index_js_1.resolveProperties)({
|
||||
trace: this.send("trace_transaction", [req.hash]),
|
||||
tx: this.getTransaction(req.hash)
|
||||
});
|
||||
if (trace == null || tx == null) {
|
||||
return null;
|
||||
}
|
||||
let data;
|
||||
@ -68,7 +65,12 @@ class AlchemyProvider extends provider_jsonrpc_js_1.JsonRpcProvider {
|
||||
if (data) {
|
||||
if (error) {
|
||||
(0, index_js_1.throwError)("an error occurred during transaction executions", "CALL_EXCEPTION", {
|
||||
data
|
||||
action: "getTransactionResult",
|
||||
data,
|
||||
reason: null,
|
||||
transaction: tx,
|
||||
invocation: null,
|
||||
revert: null // @TODO
|
||||
});
|
||||
}
|
||||
return data;
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"provider-alchemy.js","sourceRoot":"","sources":["../../src.ts/providers/provider-alchemy.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"provider-alchemy.js","sourceRoot":"","sources":["../../src.ts/providers/provider-alchemy.ts"],"names":[],"mappings":"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"}
|
90
lib.commonjs/providers/provider-browser.js
Normal file
90
lib.commonjs/providers/provider-browser.js
Normal file
@ -0,0 +1,90 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.BrowserProvider = void 0;
|
||||
const index_js_1 = require("../utils/index.js");
|
||||
const provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");
|
||||
;
|
||||
class BrowserProvider extends provider_jsonrpc_js_1.JsonRpcApiPollingProvider {
|
||||
#request;
|
||||
constructor(ethereum, network) {
|
||||
super(network, { batchMaxCount: 1 });
|
||||
this.#request = async (method, params) => {
|
||||
const payload = { method, params };
|
||||
this.emit("debug", { action: "sendEip1193Request", payload });
|
||||
try {
|
||||
const result = await ethereum.request(payload);
|
||||
this.emit("debug", { action: "receiveEip1193Result", result });
|
||||
return result;
|
||||
}
|
||||
catch (e) {
|
||||
const error = new Error(e.message);
|
||||
error.code = e.code;
|
||||
error.data = e.data;
|
||||
error.payload = payload;
|
||||
this.emit("debug", { action: "receiveEip1193Error", error });
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
}
|
||||
async send(method, params) {
|
||||
await this._start();
|
||||
return await super.send(method, params);
|
||||
}
|
||||
async _send(payload) {
|
||||
(0, index_js_1.assertArgument)(!Array.isArray(payload), "EIP-1193 does not support batch request", "payload", payload);
|
||||
try {
|
||||
const result = await this.#request(payload.method, payload.params || []);
|
||||
return [{ id: payload.id, result }];
|
||||
}
|
||||
catch (e) {
|
||||
return [{
|
||||
id: payload.id,
|
||||
error: { code: e.code, data: e.data, message: e.message }
|
||||
}];
|
||||
}
|
||||
}
|
||||
getRpcError(payload, error) {
|
||||
error = JSON.parse(JSON.stringify(error));
|
||||
// EIP-1193 gives us some machine-readable error codes, so rewrite
|
||||
// them into
|
||||
switch (error.error.code || -1) {
|
||||
case 4001:
|
||||
error.error.message = `ethers-user-denied: ${error.error.message}`;
|
||||
break;
|
||||
case 4200:
|
||||
error.error.message = `ethers-unsupported: ${error.error.message}`;
|
||||
break;
|
||||
}
|
||||
return super.getRpcError(payload, error);
|
||||
}
|
||||
async hasSigner(address) {
|
||||
if (address == null) {
|
||||
address = 0;
|
||||
}
|
||||
const accounts = await this.send("eth_accounts", []);
|
||||
if (typeof (address) === "number") {
|
||||
return (accounts.length > address);
|
||||
}
|
||||
address = address.toLowerCase();
|
||||
return accounts.filter((a) => (a.toLowerCase() === address)).length !== 0;
|
||||
}
|
||||
async getSigner(address) {
|
||||
if (address == null) {
|
||||
address = 0;
|
||||
}
|
||||
if (!(await this.hasSigner(address))) {
|
||||
try {
|
||||
//const resp =
|
||||
await this.#request("eth_requestAccounts", []);
|
||||
//console.log("RESP", resp);
|
||||
}
|
||||
catch (error) {
|
||||
const payload = error.payload;
|
||||
throw this.getRpcError(payload, { id: payload.id, error });
|
||||
}
|
||||
}
|
||||
return await super.getSigner(address);
|
||||
}
|
||||
}
|
||||
exports.BrowserProvider = BrowserProvider;
|
||||
//# sourceMappingURL=provider-browser.js.map
|
1
lib.commonjs/providers/provider-browser.js.map
Normal file
1
lib.commonjs/providers/provider-browser.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"provider-browser.js","sourceRoot":"","sources":["../../src.ts/providers/provider-browser.ts"],"names":[],"mappings":"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"}
|
@ -1,8 +1,9 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.BaseEtherscanProvider = exports.EtherscanPlugin = void 0;
|
||||
const index_js_1 = require("../transaction/index.js");
|
||||
const index_js_2 = require("../utils/index.js");
|
||||
const index_js_1 = require("../abi/index.js");
|
||||
const index_js_2 = require("../transaction/index.js");
|
||||
const index_js_3 = require("../utils/index.js");
|
||||
const abstract_provider_js_1 = require("./abstract-provider.js");
|
||||
const network_js_1 = require("./network.js");
|
||||
const plugins_network_js_1 = require("./plugins-network.js");
|
||||
@ -15,7 +16,7 @@ class EtherscanPlugin extends plugins_network_js_1.NetworkPlugin {
|
||||
constructor(baseUrl, communityApiKey) {
|
||||
super(EtherscanPluginId);
|
||||
//if (communityApiKey == null) { communityApiKey = null; }
|
||||
(0, index_js_2.defineProperties)(this, { baseUrl, communityApiKey });
|
||||
(0, index_js_3.defineProperties)(this, { baseUrl, communityApiKey });
|
||||
}
|
||||
clone() {
|
||||
return new EtherscanPlugin(this.baseUrl, this.communityApiKey);
|
||||
@ -34,7 +35,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
if (apiKey == null && this.#plugin) {
|
||||
apiKey = this.#plugin.communityApiKey;
|
||||
}
|
||||
(0, index_js_2.defineProperties)(this, { apiKey, network });
|
||||
(0, index_js_3.defineProperties)(this, { apiKey, network });
|
||||
// Test that the network is supported by Etherscan
|
||||
this.getBaseUrl();
|
||||
}
|
||||
@ -45,17 +46,25 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
switch (this.network.name) {
|
||||
case "mainnet":
|
||||
return "https:/\/api.etherscan.io";
|
||||
case "ropsten":
|
||||
return "https:/\/api-ropsten.etherscan.io";
|
||||
case "rinkeby":
|
||||
return "https:/\/api-rinkeby.etherscan.io";
|
||||
case "kovan":
|
||||
return "https:/\/api-kovan.etherscan.io";
|
||||
case "goerli":
|
||||
return "https:/\/api-goerli.etherscan.io";
|
||||
case "sepolia":
|
||||
return "https:/\/api-sepolia.etherscan.io";
|
||||
case "arbitrum":
|
||||
return "https:/\/api.arbiscan.io";
|
||||
case "arbitrum-goerli":
|
||||
return "https:/\/api-goerli.arbiscan.io";
|
||||
case "matic":
|
||||
return "https:/\/api.polygonscan.com";
|
||||
case "maticmum":
|
||||
return "https:/\/api-testnet.polygonscan.com";
|
||||
case "optimism":
|
||||
return "https:/\/api-optimistic.etherscan.io";
|
||||
case "optimism-goerli":
|
||||
return "https:/\/api-goerli-optimistic.etherscan.io";
|
||||
default:
|
||||
}
|
||||
return (0, index_js_2.throwArgumentError)("unsupported network", "network", this.network);
|
||||
return (0, index_js_3.throwArgumentError)("unsupported network", "network", this.network);
|
||||
}
|
||||
getUrl(module, params) {
|
||||
const query = Object.keys(params).reduce((accum, key) => {
|
||||
@ -84,7 +93,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
const url = (post ? this.getPostUrl() : this.getUrl(module, params));
|
||||
const payload = (post ? this.getPostData(module, params) : null);
|
||||
this.emit("debug", { action: "sendRequest", id, url, payload: payload });
|
||||
const request = new index_js_2.FetchRequest(url);
|
||||
const request = new index_js_3.FetchRequest(url);
|
||||
request.setThrottleParams({ slotInterval: 1000 });
|
||||
request.retryFunc = (req, resp, attempt) => {
|
||||
if (this.isCommunityResource()) {
|
||||
@ -93,7 +102,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
return Promise.resolve(true);
|
||||
};
|
||||
request.processFunc = async (request, response) => {
|
||||
const result = response.hasBody() ? JSON.parse((0, index_js_2.toUtf8String)(response.body)) : {};
|
||||
const result = response.hasBody() ? JSON.parse((0, index_js_3.toUtf8String)(response.body)) : {};
|
||||
const throttle = ((typeof (result.result) === "string") ? result.result : "").toLowerCase().indexOf("rate limit") >= 0;
|
||||
if (module === "proxy") {
|
||||
// This JSON response indicates we are being throttled
|
||||
@ -125,7 +134,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
this.emit("debug", { action: "receiveError", id, error: "missing body", reason: "null body" });
|
||||
throw new Error();
|
||||
}
|
||||
const result = JSON.parse((0, index_js_2.toUtf8String)(response.body));
|
||||
const result = JSON.parse((0, index_js_3.toUtf8String)(response.body));
|
||||
if (module === "proxy") {
|
||||
if (result.jsonrpc != "2.0") {
|
||||
this.emit("debug", { action: "receiveError", id, result, reason: "invalid JSON-RPC" });
|
||||
@ -179,21 +188,28 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
}
|
||||
// Quantity-types require no leading zero, unless 0
|
||||
if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {
|
||||
value = (0, index_js_2.toQuantity)((0, index_js_2.hexlify)(value));
|
||||
value = (0, index_js_3.toQuantity)((0, index_js_3.hexlify)(value));
|
||||
}
|
||||
else if (key === "accessList") {
|
||||
value = "[" + (0, index_js_1.accessListify)(value).map((set) => {
|
||||
value = "[" + (0, index_js_2.accessListify)(value).map((set) => {
|
||||
return `{address:"${set.address}",storageKeys:["${set.storageKeys.join('","')}"]}`;
|
||||
}).join(",") + "]";
|
||||
}
|
||||
else {
|
||||
value = (0, index_js_2.hexlify)(value);
|
||||
value = (0, index_js_3.hexlify)(value);
|
||||
}
|
||||
result[key] = value;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
_checkError(req, error, transaction) {
|
||||
if (req.method === "call" || req.method === "estimateGas") {
|
||||
if (error.message.match(/execution reverted/i)) {
|
||||
const e = (0, index_js_1.getBuiltinCallException)(req.method, req.transaction, error.data);
|
||||
e.info = { request: req, error };
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
/*
|
||||
let body = "";
|
||||
if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {
|
||||
@ -315,7 +331,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
boolean: (req.includeTransactions ? "true" : "false")
|
||||
});
|
||||
}
|
||||
return (0, index_js_2.throwError)("getBlock by blockHash not supported by Etherscan", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_3.throwError)("getBlock by blockHash not supported by Etherscan", "UNSUPPORTED_OPERATION", {
|
||||
operation: "getBlock(blockHash)"
|
||||
});
|
||||
case "getTransaction":
|
||||
|
File diff suppressed because one or more lines are too long
@ -11,26 +11,22 @@ function getHost(name) {
|
||||
switch (name) {
|
||||
case "mainnet":
|
||||
return "mainnet.infura.io";
|
||||
case "ropsten":
|
||||
return "ropsten.infura.io";
|
||||
case "rinkeby":
|
||||
return "rinkeby.infura.io";
|
||||
case "kovan":
|
||||
return "kovan.infura.io";
|
||||
case "goerli":
|
||||
return "goerli.infura.io";
|
||||
case "sepolia":
|
||||
return "sepolia.infura.io";
|
||||
case "arbitrum":
|
||||
return "arbitrum-mainnet.infura.io";
|
||||
case "arbitrum-goerli":
|
||||
return "arbitrum-goerli.infura.io";
|
||||
case "matic":
|
||||
return "polygon-mainnet.infura.io";
|
||||
case "maticmum":
|
||||
return "polygon-mumbai.infura.io";
|
||||
case "optimism":
|
||||
return "optimism-mainnet.infura.io";
|
||||
case "optimism-kovan":
|
||||
return "optimism-kovan.infura.io";
|
||||
case "arbitrum":
|
||||
return "arbitrum-mainnet.infura.io";
|
||||
case "arbitrum-rinkeby":
|
||||
return "arbitrum-rinkeby.infura.io";
|
||||
case "optimism-goerli":
|
||||
return "optimism-goerli.infura.io";
|
||||
}
|
||||
return (0, index_js_1.throwArgumentError)("unsupported network", "network", name);
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"provider-infura.js","sourceRoot":"","sources":["../../src.ts/providers/provider-infura.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"provider-infura.js","sourceRoot":"","sources":["../../src.ts/providers/provider-infura.ts"],"names":[],"mappings":";;;AAAA,gDAE2B;AAE3B,iDAAqD;AACrD,6CAAuC;AACvC,+DAAwD;AACxD,mEAA4D;AAO5D,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D,SAAS,OAAO,CAAC,IAAY;IACzB,QAAO,IAAI,EAAE;QACT,KAAK,SAAS;YACV,OAAO,mBAAmB,CAAC;QAC/B,KAAK,QAAQ;YACT,OAAO,kBAAkB,CAAC;QAC9B,KAAK,SAAS;YACV,OAAO,mBAAmB,CAAC;QAE/B,KAAK,UAAU;YACX,OAAO,4BAA4B,CAAC;QACxC,KAAK,iBAAiB;YAClB,OAAO,2BAA2B,CAAC;QACvC,KAAK,OAAO;YACR,OAAO,2BAA2B,CAAC;QACvC,KAAK,UAAU;YACX,OAAO,0BAA0B,CAAC;QACtC,KAAK,UAAU;YACX,OAAO,4BAA4B,CAAC;QACxC,KAAK,iBAAiB;YAClB,OAAO,2BAA2B,CAAC;KAC1C;IAED,OAAO,IAAA,6BAAkB,EAAC,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAa,uBAAwB,SAAQ,yCAAiB;IACjD,SAAS,CAAU;IACnB,aAAa,CAAiB;IAEvC,YAAY,OAAoB,EAAE,MAAY;QAC1C,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,WAAW,EAAE;YACjB,IAAA,qBAAU,EAAC,8CAA8C,EAAE,uBAAuB,EAAE;gBAChF,SAAS,EAAE,uCAAuC;aACrD,CAAC,CAAC;SACN;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvE,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpB,IAAA,2BAAgB,EAA0B,IAAI,EAAE;YAC5C,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,aAAa,EAAE,QAAQ,CAAC,aAAa;SACxC,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC;IACjD,CAAC;CACJ;AA1BD,0DA0BC;AAED,MAAa,cAAe,SAAQ,qCAAe;IACtC,SAAS,CAAU;IACnB,aAAa,CAAiB;IAEvC,YAAY,WAAuB,SAAS,EAAE,SAAyB,EAAE,aAA6B;QAClG,MAAM,OAAO,GAAG,oBAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,IAAI,EAAE;YAAE,SAAS,GAAG,gBAAgB,CAAC;SAAE;QACxD,IAAI,aAAa,IAAI,IAAI,EAAE;YAAE,aAAa,GAAG,IAAI,CAAC;SAAE;QAEpD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC7E,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,IAAA,2BAAgB,EAAiB,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,YAAY,CAAC,OAAe;QACxB,IAAI;YACA,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC1E;QAAC,OAAO,KAAK,EAAE,GAAG;QACnB,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,OAAoB,EAAE,MAAY;QAC1D,OAAO,IAAI,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,SAAyB,EAAE,aAA6B;QACxF,IAAI,SAAS,IAAI,IAAI,EAAE;YAAE,SAAS,GAAG,gBAAgB,CAAC;SAAE;QACxD,IAAI,aAAa,IAAI,IAAI,EAAE;YAAE,aAAa,GAAG,IAAI,CAAC;SAAE;QAEpD,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,YAAa,OAAO,CAAC,OAAO,CAAC,IAAI,CAAE,OAAQ,SAAU,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,IAAI,aAAa,EAAE;YAAE,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;SAAE;QAEjE,IAAI,SAAS,KAAK,gBAAgB,EAAE;YAChC,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACrD,IAAA,kCAAmB,EAAC,gBAAgB,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;SACL;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CAEJ;AAhDD,wCAgDC"}
|
@ -2,12 +2,13 @@
|
||||
// @TODO:
|
||||
// - Add the batching API
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.JsonRpcSigner = void 0;
|
||||
exports.JsonRpcProvider = exports.JsonRpcApiPollingProvider = exports.JsonRpcApiProvider = exports.JsonRpcSigner = void 0;
|
||||
// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false
|
||||
const index_js_1 = require("../address/index.js");
|
||||
const index_js_2 = require("../hash/index.js");
|
||||
const index_js_3 = require("../transaction/index.js");
|
||||
const index_js_4 = require("../utils/index.js");
|
||||
const index_js_1 = require("../abi/index.js");
|
||||
const index_js_2 = require("../address/index.js");
|
||||
const index_js_3 = require("../hash/index.js");
|
||||
const index_js_4 = require("../transaction/index.js");
|
||||
const index_js_5 = require("../utils/index.js");
|
||||
const abstract_provider_js_1 = require("./abstract-provider.js");
|
||||
const abstract_signer_js_1 = require("./abstract-signer.js");
|
||||
const network_js_1 = require("./network.js");
|
||||
@ -57,10 +58,10 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
address;
|
||||
constructor(provider, address) {
|
||||
super(provider);
|
||||
(0, index_js_4.defineProperties)(this, { address });
|
||||
(0, index_js_5.defineProperties)(this, { address });
|
||||
}
|
||||
connect(provider) {
|
||||
return (0, index_js_4.throwError)("cannot reconnect JsonRpcSigner", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_5.throwError)("cannot reconnect JsonRpcSigner", "UNSUPPORTED_OPERATION", {
|
||||
operation: "signer.connect"
|
||||
});
|
||||
}
|
||||
@ -80,9 +81,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
if (tx.from) {
|
||||
const _from = tx.from;
|
||||
promises.push((async () => {
|
||||
const from = await (0, index_js_1.resolveAddress)(_from, this.provider);
|
||||
const from = await (0, index_js_2.resolveAddress)(_from, this.provider);
|
||||
if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {
|
||||
(0, index_js_4.throwArgumentError)("from address mismatch", "transaction", _tx);
|
||||
(0, index_js_5.throwArgumentError)("from address mismatch", "transaction", _tx);
|
||||
}
|
||||
tx.from = from;
|
||||
})());
|
||||
@ -102,7 +103,7 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
if (tx.to != null) {
|
||||
const _to = tx.to;
|
||||
promises.push((async () => {
|
||||
tx.to = await (0, index_js_1.resolveAddress)(_to, this.provider);
|
||||
tx.to = await (0, index_js_2.resolveAddress)(_to, this.provider);
|
||||
})());
|
||||
}
|
||||
// Wait until all of our properties are filled in
|
||||
@ -139,9 +140,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
const tx = deepCopy(_tx);
|
||||
// Make sure the from matches the sender
|
||||
if (tx.from) {
|
||||
const from = await (0, index_js_1.resolveAddress)(tx.from, this.provider);
|
||||
const from = await (0, index_js_2.resolveAddress)(tx.from, this.provider);
|
||||
if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {
|
||||
return (0, index_js_4.throwArgumentError)("from address mismatch", "transaction", _tx);
|
||||
return (0, index_js_5.throwArgumentError)("from address mismatch", "transaction", _tx);
|
||||
}
|
||||
tx.from = from;
|
||||
}
|
||||
@ -149,27 +150,27 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
tx.from = this.address;
|
||||
}
|
||||
const hexTx = this.provider.getRpcTransaction(tx);
|
||||
return await this.provider.send("eth_sign_Transaction", [hexTx]);
|
||||
return await this.provider.send("eth_signTransaction", [hexTx]);
|
||||
}
|
||||
async signMessage(_message) {
|
||||
const message = ((typeof (_message) === "string") ? (0, index_js_4.toUtf8Bytes)(_message) : _message);
|
||||
const message = ((typeof (_message) === "string") ? (0, index_js_5.toUtf8Bytes)(_message) : _message);
|
||||
return await this.provider.send("personal_sign", [
|
||||
(0, index_js_4.hexlify)(message), this.address.toLowerCase()
|
||||
(0, index_js_5.hexlify)(message), this.address.toLowerCase()
|
||||
]);
|
||||
}
|
||||
async signTypedData(domain, types, _value) {
|
||||
const value = deepCopy(_value);
|
||||
// Populate any ENS names (in-place)
|
||||
const populated = await index_js_2.TypedDataEncoder.resolveNames(domain, types, value, async (value) => {
|
||||
const address = await (0, index_js_1.resolveAddress)(value);
|
||||
const populated = await index_js_3.TypedDataEncoder.resolveNames(domain, types, value, async (value) => {
|
||||
const address = await (0, index_js_2.resolveAddress)(value);
|
||||
if (address == null) {
|
||||
return (0, index_js_4.throwArgumentError)("TypedData does not support null address", "value", value);
|
||||
return (0, index_js_5.throwArgumentError)("TypedData does not support null address", "value", value);
|
||||
}
|
||||
return address;
|
||||
});
|
||||
return await this.provider.send("eth_signTypedData_v4", [
|
||||
this.address.toLowerCase(),
|
||||
JSON.stringify(index_js_2.TypedDataEncoder.getPayload(populated.domain, types, populated.value))
|
||||
JSON.stringify(index_js_3.TypedDataEncoder.getPayload(populated.domain, types, populated.value))
|
||||
]);
|
||||
}
|
||||
async unlock(password) {
|
||||
@ -179,9 +180,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
|
||||
}
|
||||
// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign
|
||||
async _legacySignMessage(_message) {
|
||||
const message = ((typeof (_message) === "string") ? (0, index_js_4.toUtf8Bytes)(_message) : _message);
|
||||
const message = ((typeof (_message) === "string") ? (0, index_js_5.toUtf8Bytes)(_message) : _message);
|
||||
return await this.provider.send("eth_sign", [
|
||||
this.address.toLowerCase(), (0, index_js_4.hexlify)(message)
|
||||
this.address.toLowerCase(), (0, index_js_5.hexlify)(message)
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -281,7 +282,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
const staticNetwork = this._getOption("staticNetwork");
|
||||
if (staticNetwork) {
|
||||
if (staticNetwork !== network) {
|
||||
(0, index_js_4.throwArgumentError)("staticNetwork MUST match network object", "options", options);
|
||||
(0, index_js_5.throwArgumentError)("staticNetwork MUST match network object", "options", options);
|
||||
}
|
||||
this.#network = staticNetwork;
|
||||
}
|
||||
@ -300,7 +301,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
*/
|
||||
get _network() {
|
||||
if (!this.#network) {
|
||||
(0, index_js_4.throwError)("network is not available yet", "NETWORK_ERROR");
|
||||
(0, index_js_5.throwError)("network is not available yet", "NETWORK_ERROR");
|
||||
}
|
||||
return this.#network;
|
||||
}
|
||||
@ -310,7 +311,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
* Sub-classes **MUST** override this.
|
||||
*/
|
||||
_send(payload) {
|
||||
return (0, index_js_4.throwError)("sub-classes must override _send", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_5.throwError)("sub-classes must override _send", "UNSUPPORTED_OPERATION", {
|
||||
operation: "jsonRpcApiProvider._send"
|
||||
});
|
||||
}
|
||||
@ -325,7 +326,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
// is fair), so we delete type if it is 0 and a non-EIP-1559 network
|
||||
if (req.method === "call" || req.method === "estimateGas") {
|
||||
let tx = req.transaction;
|
||||
if (tx && tx.type != null && (0, index_js_4.getBigInt)(tx.type)) {
|
||||
if (tx && tx.type != null && (0, index_js_5.getBigInt)(tx.type)) {
|
||||
// If there are no EIP-1559 properties, it might be non-EIP-a559
|
||||
if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {
|
||||
const feeData = await this.getFeeData();
|
||||
@ -357,7 +358,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
}
|
||||
// If we are ready, use ``send``, which enabled requests to be batched
|
||||
if (this.ready) {
|
||||
return network_js_1.Network.from((0, index_js_4.getBigInt)(await this.send("eth_chainId", [])));
|
||||
return network_js_1.Network.from((0, index_js_5.getBigInt)(await this.send("eth_chainId", [])));
|
||||
}
|
||||
// We are not ready yet; use the primitive _send
|
||||
const payload = {
|
||||
@ -374,7 +375,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
}
|
||||
this.emit("debug", { action: "receiveRpcResult", result });
|
||||
if ("result" in result) {
|
||||
return network_js_1.Network.from((0, index_js_4.getBigInt)(result.result));
|
||||
return network_js_1.Network.from((0, index_js_5.getBigInt)(result.result));
|
||||
}
|
||||
throw this.getRpcError(payload, result);
|
||||
}
|
||||
@ -458,18 +459,18 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
if (key === "gasLimit") {
|
||||
dstKey = "gas";
|
||||
}
|
||||
result[dstKey] = (0, index_js_4.toQuantity)((0, index_js_4.getBigInt)(tx[key], `tx.${key}`));
|
||||
result[dstKey] = (0, index_js_5.toQuantity)((0, index_js_5.getBigInt)(tx[key], `tx.${key}`));
|
||||
});
|
||||
// Make sure addresses and data are lowercase
|
||||
["from", "to", "data"].forEach((key) => {
|
||||
if (tx[key] == null) {
|
||||
return;
|
||||
}
|
||||
result[key] = (0, index_js_4.hexlify)(tx[key]);
|
||||
result[key] = (0, index_js_5.hexlify)(tx[key]);
|
||||
});
|
||||
// Normalize the access list object
|
||||
if (tx.accessList) {
|
||||
result["accessList"] = (0, index_js_3.accessListify)(tx.accessList);
|
||||
result["accessList"] = (0, index_js_4.accessListify)(tx.accessList);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -568,53 +569,128 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
* that different nodes return, coercing them into a machine-readable
|
||||
* standardized error.
|
||||
*/
|
||||
getRpcError(payload, error) {
|
||||
getRpcError(payload, _error) {
|
||||
const { method } = payload;
|
||||
if (method === "eth_call") {
|
||||
const transaction = (payload.params[0]);
|
||||
const { error } = _error;
|
||||
if (method === "eth_call" || method === "eth_estimateGas") {
|
||||
const result = spelunkData(error);
|
||||
const e = (0, index_js_1.getBuiltinCallException)((method === "eth_call") ? "call" : "estimateGas", (payload.params[0]), (result ? result.data : null));
|
||||
e.info = { error, payload };
|
||||
return e;
|
||||
/*
|
||||
let message = "missing revert data during JSON-RPC call";
|
||||
|
||||
const action = <"call" | "estimateGas" | "unknown">(({ eth_call: "call", eth_estimateGas: "estimateGas" })[method] || "unknown");
|
||||
let data: null | string = null;
|
||||
let reason: null | string = null;
|
||||
const transaction = <{ from: string, to: string, data: string }>((<any>payload).params[0]);
|
||||
const invocation = null;
|
||||
let revert: null | { signature: string, name: string, args: Array<any> } = null;
|
||||
|
||||
if (result) {
|
||||
// @TODO: Extract errorSignature, errorName, errorArgs, reason if
|
||||
// it is Error(string) or Panic(uint25)
|
||||
return (0, index_js_4.makeError)("execution reverted during JSON-RPC call", "CALL_EXCEPTION", {
|
||||
data: result.data,
|
||||
transaction
|
||||
});
|
||||
message = "execution reverted during JSON-RPC call";
|
||||
data = result.data;
|
||||
|
||||
let bytes = getBytes(data);
|
||||
if (bytes.length % 32 !== 4) {
|
||||
message += " (could not parse reason; invalid data length)";
|
||||
|
||||
} else if (data.substring(0, 10) === "0x08c379a0") {
|
||||
// Error(string)
|
||||
try {
|
||||
if (bytes.length < 68) { throw new Error("bad length"); }
|
||||
bytes = bytes.slice(4);
|
||||
const pointer = getNumber(hexlify(bytes.slice(0, 32)));
|
||||
bytes = bytes.slice(pointer);
|
||||
if (bytes.length < 32) { throw new Error("overrun"); }
|
||||
const length = getNumber(hexlify(bytes.slice(0, 32)));
|
||||
bytes = bytes.slice(32);
|
||||
if (bytes.length < length) { throw new Error("overrun"); }
|
||||
reason = toUtf8String(bytes.slice(0, length));
|
||||
revert = {
|
||||
signature: "Error(string)",
|
||||
name: "Error",
|
||||
args: [ reason ]
|
||||
};
|
||||
message += `: ${ JSON.stringify(reason) }`;
|
||||
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not parse reason; invalid data length)";
|
||||
}
|
||||
return (0, index_js_4.makeError)("missing revert data during JSON-RPC call", "CALL_EXCEPTION", {
|
||||
data: "0x", transaction, info: { error }
|
||||
});
|
||||
|
||||
} else if (data.substring(0, 10) === "0x4e487b71") {
|
||||
// Panic(uint256)
|
||||
try {
|
||||
if (bytes.length !== 36) { throw new Error("bad length"); }
|
||||
const arg = getNumber(hexlify(bytes.slice(4)));
|
||||
revert = {
|
||||
signature: "Panic(uint256)",
|
||||
name: "Panic",
|
||||
args: [ arg ]
|
||||
};
|
||||
reason = `Panic due to ${ PanicReasons.get(Number(arg)) || "UNKNOWN" }(${ arg })`;
|
||||
message += `: ${ reason }`;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not parse panic reason)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return makeError(message, "CALL_EXCEPTION", {
|
||||
action, data, reason, transaction, invocation, revert,
|
||||
info: { payload, error }
|
||||
});
|
||||
*/
|
||||
}
|
||||
// Only estimateGas and call can return arbitrary contract-defined text, so now we
|
||||
// we can process text safely.
|
||||
const message = JSON.stringify(spelunkMessage(error));
|
||||
if (method === "eth_estimateGas") {
|
||||
const transaction = (payload.params[0]);
|
||||
if (message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {
|
||||
return (0, index_js_4.makeError)("cannot estimate gas; transaction may fail or may require manual gas limit", "UNPREDICTABLE_GAS_LIMIT", {
|
||||
transaction
|
||||
if (typeof (error.message) === "string" && error.message.match(/user denied|ethers-user-denied/i)) {
|
||||
const actionMap = {
|
||||
eth_sign: "signMessage",
|
||||
personal_sign: "signMessage",
|
||||
eth_signTypedData_v4: "signTypedData",
|
||||
eth_signTransaction: "signTransaction",
|
||||
eth_sendTransaction: "sendTransaction",
|
||||
eth_requestAccounts: "requestAccess",
|
||||
wallet_requestAccounts: "requestAccess",
|
||||
};
|
||||
return (0, index_js_5.makeError)(`user rejected action`, "ACTION_REJECTED", {
|
||||
action: (actionMap[method] || "unknown"),
|
||||
reason: "rejected",
|
||||
info: { payload, error }
|
||||
});
|
||||
}
|
||||
}
|
||||
if (method === "eth_sendRawTransaction" || method === "eth_sendTransaction") {
|
||||
const transaction = (payload.params[0]);
|
||||
if (message.match(/insufficient funds|base fee exceeds gas limit/)) {
|
||||
return (0, index_js_4.makeError)("insufficient funds for intrinsic transaction cost", "INSUFFICIENT_FUNDS", {
|
||||
return (0, index_js_5.makeError)("insufficient funds for intrinsic transaction cost", "INSUFFICIENT_FUNDS", {
|
||||
transaction
|
||||
});
|
||||
}
|
||||
if (message.match(/nonce/) && message.match(/too low/)) {
|
||||
return (0, index_js_4.makeError)("nonce has already been used", "NONCE_EXPIRED", { transaction });
|
||||
return (0, index_js_5.makeError)("nonce has already been used", "NONCE_EXPIRED", { transaction });
|
||||
}
|
||||
// "replacement transaction underpriced"
|
||||
if (message.match(/replacement transaction/) && message.match(/underpriced/)) {
|
||||
return (0, index_js_4.makeError)("replacement fee too low", "REPLACEMENT_UNDERPRICED", { transaction });
|
||||
return (0, index_js_5.makeError)("replacement fee too low", "REPLACEMENT_UNDERPRICED", { transaction });
|
||||
}
|
||||
if (message.match(/only replay-protected/)) {
|
||||
return (0, index_js_4.makeError)("legacy pre-eip-155 transactions not supported", "UNSUPPORTED_OPERATION", {
|
||||
return (0, index_js_5.makeError)("legacy pre-eip-155 transactions not supported", "UNSUPPORTED_OPERATION", {
|
||||
operation: method, info: { transaction }
|
||||
});
|
||||
}
|
||||
}
|
||||
return (0, index_js_4.makeError)("could not coalesce error", "UNKNOWN_ERROR", { error });
|
||||
if (message.match(/the method .* does not exist/i)) {
|
||||
return (0, index_js_5.makeError)("unsupported operation", "UNSUPPORTED_OPERATION", {
|
||||
operation: payload.method
|
||||
});
|
||||
}
|
||||
return (0, index_js_5.makeError)("could not coalesce error", "UNKNOWN_ERROR", { error });
|
||||
}
|
||||
/**
|
||||
* Requests the %%method%% with %%params%% via the JSON-RPC protocol
|
||||
@ -659,19 +735,19 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
// Account index
|
||||
if (typeof (address) === "number") {
|
||||
const accounts = (await accountsPromise);
|
||||
if (address > accounts.length) {
|
||||
if (address >= accounts.length) {
|
||||
throw new Error("no such account");
|
||||
}
|
||||
return new JsonRpcSigner(this, accounts[address]);
|
||||
}
|
||||
const { accounts } = await (0, index_js_4.resolveProperties)({
|
||||
const { accounts } = await (0, index_js_5.resolveProperties)({
|
||||
network: this.getNetwork(),
|
||||
accounts: accountsPromise
|
||||
});
|
||||
// Account address
|
||||
address = (0, index_js_1.getAddress)(address);
|
||||
address = (0, index_js_2.getAddress)(address);
|
||||
for (const account of accounts) {
|
||||
if ((0, index_js_1.getAddress)(account) === account) {
|
||||
if ((0, index_js_2.getAddress)(account) === account) {
|
||||
return new JsonRpcSigner(this, account);
|
||||
}
|
||||
}
|
||||
@ -679,6 +755,36 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
|
||||
}
|
||||
}
|
||||
exports.JsonRpcApiProvider = JsonRpcApiProvider;
|
||||
class JsonRpcApiPollingProvider extends JsonRpcApiProvider {
|
||||
#pollingInterval;
|
||||
constructor(network, options) {
|
||||
super(network, options);
|
||||
this.#pollingInterval = 4000;
|
||||
}
|
||||
_getSubscriber(sub) {
|
||||
const subscriber = super._getSubscriber(sub);
|
||||
if (isPollable(subscriber)) {
|
||||
subscriber.pollingInterval = this.#pollingInterval;
|
||||
}
|
||||
return subscriber;
|
||||
}
|
||||
/**
|
||||
* The polling interval (default: 4000 ms)
|
||||
*/
|
||||
get pollingInterval() { return this.#pollingInterval; }
|
||||
set pollingInterval(value) {
|
||||
if (!Number.isInteger(value) || value < 0) {
|
||||
throw new Error("invalid interval");
|
||||
}
|
||||
this.#pollingInterval = value;
|
||||
this._forEachSubscriber((sub) => {
|
||||
if (isPollable(sub)) {
|
||||
sub.pollingInterval = this.#pollingInterval;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.JsonRpcApiPollingProvider = JsonRpcApiPollingProvider;
|
||||
/**
|
||||
* The JsonRpcProvider is one of the most common Providers,
|
||||
* which performs all operations over HTTP (or HTTPS) requests.
|
||||
@ -687,21 +793,19 @@ exports.JsonRpcApiProvider = JsonRpcApiProvider;
|
||||
* number; when it advances, all block-base events are then checked
|
||||
* for updates.
|
||||
*/
|
||||
class JsonRpcProvider extends JsonRpcApiProvider {
|
||||
class JsonRpcProvider extends JsonRpcApiPollingProvider {
|
||||
#connect;
|
||||
#pollingInterval;
|
||||
constructor(url, network, options) {
|
||||
if (url == null) {
|
||||
url = "http:/\/localhost:8545";
|
||||
}
|
||||
super(network, options);
|
||||
if (typeof (url) === "string") {
|
||||
this.#connect = new index_js_4.FetchRequest(url);
|
||||
this.#connect = new index_js_5.FetchRequest(url);
|
||||
}
|
||||
else {
|
||||
this.#connect = url.clone();
|
||||
}
|
||||
this.#pollingInterval = 4000;
|
||||
}
|
||||
_getConnection() {
|
||||
return this.#connect.clone();
|
||||
@ -725,21 +829,6 @@ class JsonRpcProvider extends JsonRpcApiProvider {
|
||||
}
|
||||
return resp;
|
||||
}
|
||||
/**
|
||||
* The polling interval (default: 4000 ms)
|
||||
*/
|
||||
get pollingInterval() { return this.#pollingInterval; }
|
||||
set pollingInterval(value) {
|
||||
if (!Number.isInteger(value) || value < 0) {
|
||||
throw new Error("invalid interval");
|
||||
}
|
||||
this.#pollingInterval = value;
|
||||
this._forEachSubscriber((sub) => {
|
||||
if (isPollable(sub)) {
|
||||
sub.pollingInterval = this.#pollingInterval;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.JsonRpcProvider = JsonRpcProvider;
|
||||
function spelunkData(value) {
|
||||
@ -747,7 +836,7 @@ function spelunkData(value) {
|
||||
return null;
|
||||
}
|
||||
// These *are* the droids we're looking for.
|
||||
if (typeof (value.message) === "string" && value.message.match("reverted") && (0, index_js_4.isHexString)(value.data)) {
|
||||
if (typeof (value.message) === "string" && value.message.match("reverted") && (0, index_js_5.isHexString)(value.data)) {
|
||||
return { message: value.message, data: value.data };
|
||||
}
|
||||
// Spelunk further...
|
||||
|
File diff suppressed because one or more lines are too long
@ -55,14 +55,14 @@ function copyRequest(req) {
|
||||
result.data = (0, index_js_1.hexlify)(req.data);
|
||||
}
|
||||
const bigIntKeys = "chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);
|
||||
for (const key in bigIntKeys) {
|
||||
for (const key of bigIntKeys) {
|
||||
if (!(key in req) || req[key] == null) {
|
||||
continue;
|
||||
}
|
||||
result[key] = (0, index_js_1.getBigInt)(req[key], `request.${key}`);
|
||||
}
|
||||
const numberKeys = "type,nonce".split(/,/);
|
||||
for (const key in numberKeys) {
|
||||
for (const key of numberKeys) {
|
||||
if (!(key in req) || req[key] == null) {
|
||||
continue;
|
||||
}
|
||||
|
@ -4,8 +4,14 @@ exports.recoverAddress = exports.computeAddress = void 0;
|
||||
const index_js_1 = require("../address/index.js");
|
||||
const index_js_2 = require("../crypto/index.js");
|
||||
function computeAddress(key) {
|
||||
const publicKey = index_js_2.SigningKey.computePublicKey(key, false);
|
||||
return (0, index_js_1.getAddress)((0, index_js_2.keccak256)("0x" + publicKey.substring(4)).substring(26));
|
||||
let pubkey;
|
||||
if (typeof (key) === "string") {
|
||||
pubkey = index_js_2.SigningKey.computePublicKey(key, false);
|
||||
}
|
||||
else {
|
||||
pubkey = key.publicKey;
|
||||
}
|
||||
return (0, index_js_1.getAddress)((0, index_js_2.keccak256)("0x" + pubkey.substring(4)).substring(26));
|
||||
}
|
||||
exports.computeAddress = computeAddress;
|
||||
function recoverAddress(digest, signature) {
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src.ts/transaction/address.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,iDAA2D;AAM3D,SAAgB,cAAc,CAAC,GAAW;IACtC,MAAM,SAAS,GAAG,qBAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,IAAA,qBAAU,EAAC,IAAA,oBAAS,EAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAHD,wCAGC;AAED,SAAgB,cAAc,CAAC,MAAiB,EAAE,SAAwB;IACtE,OAAO,cAAc,CAAC,qBAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC"}
|
||||
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src.ts/transaction/address.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,iDAA2D;AAK3D,SAAgB,cAAc,CAAC,GAAwB;IACnD,IAAI,MAAc,CAAC;IACnB,IAAI,OAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;QAC1B,MAAM,GAAG,qBAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACpD;SAAM;QACH,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;KAC1B;IACD,OAAO,IAAA,qBAAU,EAAC,IAAA,oBAAS,EAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AARD,wCAQC;AAED,SAAgB,cAAc,CAAC,MAAiB,EAAE,SAAwB;IACtE,OAAO,cAAc,CAAC,qBAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC"}
|
@ -374,7 +374,7 @@ class Transaction {
|
||||
}
|
||||
get hash() {
|
||||
if (this.signature == null) {
|
||||
throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");
|
||||
return null;
|
||||
}
|
||||
return (0, index_js_2.keccak256)(this.serialized);
|
||||
}
|
||||
@ -385,12 +385,13 @@ class Transaction {
|
||||
if (this.signature == null) {
|
||||
return null;
|
||||
}
|
||||
return (0, address_js_1.recoverAddress)(this.unsignedSerialized, this.signature);
|
||||
return (0, address_js_1.recoverAddress)(this.unsignedHash, this.signature);
|
||||
}
|
||||
get fromPublicKey() {
|
||||
if (this.signature == null) {
|
||||
return null;
|
||||
}
|
||||
throw new Error("@TODO");
|
||||
// use ecrecover
|
||||
return "";
|
||||
}
|
||||
@ -509,6 +510,29 @@ class Transaction {
|
||||
isFrozen() {
|
||||
return Object.isFrozen(this.#props);
|
||||
}
|
||||
toJSON() {
|
||||
const s = (v) => {
|
||||
if (v == null) {
|
||||
return null;
|
||||
}
|
||||
return v.toString();
|
||||
};
|
||||
return {
|
||||
type: this.type,
|
||||
to: this.to,
|
||||
from: this.from,
|
||||
data: this.data,
|
||||
nonce: this.nonce,
|
||||
gasLimit: s(this.gasLimit),
|
||||
gasPrice: s(this.gasPrice),
|
||||
maxPriorityFeePerGas: s(this.maxPriorityFeePerGas),
|
||||
maxFeePerGas: s(this.maxFeePerGas),
|
||||
value: s(this.value),
|
||||
chainId: s(this.chainId),
|
||||
sig: this.signature ? this.signature.toJSON() : null,
|
||||
accessList: this.accessList
|
||||
};
|
||||
}
|
||||
static from(tx) {
|
||||
if (typeof (tx) === "string") {
|
||||
const payload = (0, index_js_3.getBytes)(tx);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src.ts/utils/errors.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src.ts/utils/errors.ts"],"names":[],"mappings":"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"}
|
@ -22,15 +22,21 @@ class BaseWallet extends index_js_3.AbstractSigner {
|
||||
connect(provider) {
|
||||
return new BaseWallet(this.#signingKey, provider);
|
||||
}
|
||||
async signTransaction(_tx) {
|
||||
async signTransaction(tx) {
|
||||
// Replace any Addressable or ENS name with an address
|
||||
const tx = Object.assign({}, _tx, await (0, index_js_5.resolveProperties)({
|
||||
to: (_tx.to ? (0, index_js_1.resolveAddress)(_tx.to, this.provider) : undefined),
|
||||
from: (_tx.from ? (0, index_js_1.resolveAddress)(_tx.from, this.provider) : undefined)
|
||||
}));
|
||||
const { to, from } = await (0, index_js_5.resolveProperties)({
|
||||
to: (tx.to ? (0, index_js_1.resolveAddress)(tx.to, this.provider) : undefined),
|
||||
from: (tx.from ? (0, index_js_1.resolveAddress)(tx.from, this.provider) : undefined)
|
||||
});
|
||||
if (to != null) {
|
||||
tx.to = to;
|
||||
}
|
||||
if (from != null) {
|
||||
tx.from = from;
|
||||
}
|
||||
if (tx.from != null) {
|
||||
if ((0, index_js_1.getAddress)(tx.from) !== this.address) {
|
||||
(0, index_js_5.throwArgumentError)("transaction from address mismatch", "tx.from", _tx.from);
|
||||
if ((0, index_js_1.getAddress)((tx.from)) !== this.address) {
|
||||
(0, index_js_5.throwArgumentError)("transaction from address mismatch", "tx.from", tx.from);
|
||||
}
|
||||
delete tx.from;
|
||||
}
|
||||
@ -42,6 +48,11 @@ class BaseWallet extends index_js_3.AbstractSigner {
|
||||
async signMessage(message) {
|
||||
return this.signingKey.sign((0, index_js_2.hashMessage)(message)).serialized;
|
||||
}
|
||||
// @TODO: Add a secialized signTx and signTyped sync that enforces
|
||||
// all parameters are known?
|
||||
signMessageSync(message) {
|
||||
return this.signingKey.sign((0, index_js_2.hashMessage)(message)).serialized;
|
||||
}
|
||||
async signTypedData(domain, types, value) {
|
||||
// Populate any ENS names
|
||||
const populated = await index_js_2.TypedDataEncoder.resolveNames(domain, types, value, async (name) => {
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"base-wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/base-wallet.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"base-wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/base-wallet.ts"],"names":[],"mappings":"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"}
|
@ -1,9 +1,9 @@
|
||||
import { AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
|
||||
// PocketProvider,
|
||||
// FallbackProvider,
|
||||
} from "../index.js";
|
||||
isError, } from "../index.js";
|
||||
;
|
||||
const ethNetworks = ["default", "mainnet", "rinkeby", "ropsten", "goerli"];
|
||||
const ethNetworks = ["default", "mainnet", "goerli"];
|
||||
//const maticNetworks = [ "matic", "maticmum" ];
|
||||
const ProviderCreators = [
|
||||
{
|
||||
@ -98,9 +98,16 @@ export function getProviderNetworks(provider) {
|
||||
}
|
||||
export function getProvider(provider, network) {
|
||||
const creator = getCreator(provider);
|
||||
try {
|
||||
if (creator) {
|
||||
return creator.create(network);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
if (!isError(error, "INVALID_ARGUMENT")) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
export function checkProvider(provider, network) {
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
|
@ -1,15 +1,23 @@
|
||||
"use strict";
|
||||
/*
|
||||
import assert from "assert";
|
||||
|
||||
import { connect } from "./create-provider.js";
|
||||
|
||||
import { Contract } from "../index.js";
|
||||
|
||||
describe("Test Contract", function() {
|
||||
it("tests contract @TODO: expand", async function() {
|
||||
const provider = connect("mainnet");
|
||||
|
||||
const contract = new Contract("dai.tokens.ethers.eth", [
|
||||
"function balanceOf(address) view returns (uint)"
|
||||
], provider);
|
||||
|
||||
assert.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
|
||||
});
|
||||
});
|
||||
*/
|
||||
/*
|
||||
import { Typed } from "../abi/index.js";
|
||||
import * as providers from "../providers/index.js";
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,QAAQ,CAAC,eAAe,EAAE;IACtB,EAAE,CAAC,8BAA8B,EAAE,KAAK;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YACnD,iDAAiD;SACpD,EAAE,QAAQ,CAAC,CAAC;QAEb,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
|
||||
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;EAkBE;AACF;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
|
@ -2,13 +2,13 @@ import assert from "assert";
|
||||
import { connect } from "./create-provider.js";
|
||||
describe("Resolve ENS avatar", function () {
|
||||
[
|
||||
{ title: "data", name: "data-avatar.tests.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
||||
{ title: "ipfs", name: "ipfs-avatar.tests.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
||||
{ title: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
|
||||
{ title: "data", name: "data-avatar.tests.ethers.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
|
||||
{ title: "ipfs", name: "ipfs-avatar.tests.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
|
||||
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
|
||||
].forEach((test) => {
|
||||
it(`Resolves avatar for ${test.title}`, async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
const avatar = await provider.getAvatar(test.name);
|
||||
assert.equal(test.value, avatar, "avatar url");
|
||||
});
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,owCAAowC,EAAE;QAC7zC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,8EAA8E,EAAE;QACvI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC,EAAE;KAC/F,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,owCAAowC,EAAE;QACp0C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8EAA8E,EAAE;QAC9I,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,qCAAqC,EAAE;KACtG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@ -11,11 +11,11 @@ describe("Test CCIP execution", function () {
|
||||
]);
|
||||
assert.equal(result, keccak256(check), "response is equal");
|
||||
};
|
||||
const address = "0xAe375B05A08204C809b3cA67C680765661998886";
|
||||
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
|
||||
const calldata = "0x1234";
|
||||
it("testGet passes under normal operation", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGet(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -26,7 +26,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGet(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address,
|
||||
@ -36,13 +36,13 @@ describe("Test CCIP execution", function () {
|
||||
const result = await provider.call(tx);
|
||||
console.log(result);
|
||||
}, (error) => {
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return (isCallException(error) && error.data === offchainErrorData);
|
||||
});
|
||||
});
|
||||
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
provider.disableCcipRead = true;
|
||||
// testGetFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
@ -53,13 +53,13 @@ describe("Test CCIP execution", function () {
|
||||
const result = await provider.call(tx);
|
||||
console.log(result);
|
||||
}, (error) => {
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return (isCallException(error) && error.data === offchainErrorData);
|
||||
});
|
||||
});
|
||||
it("testGetFail should fail if all URLs 5xx", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGetFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -76,7 +76,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGetSenderFail should fail if sender does not match", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGetSenderFail(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -89,13 +89,14 @@ describe("Test CCIP execution", function () {
|
||||
const errorArgsJson = '["0x0000000000000000000000000000000000000000",["https://ethers.ricmoo.workers.dev/test-ccip-read/{sender}/{data}"],"0x1234","0xb1494be1","0x4d792065787472612064617461"]';
|
||||
const offchainErrorData = "0x556f1830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
|
||||
return (isCallException(error) && error.data === offchainErrorData &&
|
||||
error.errorSignature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
|
||||
JSON.stringify(error.errorArgs) === errorArgsJson);
|
||||
error.revert &&
|
||||
error.revert.signature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
|
||||
JSON.stringify(error.revert.args) === errorArgsJson);
|
||||
});
|
||||
});
|
||||
it("testGetMissing should fail if early URL 4xx", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGetMissing(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -112,7 +113,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testGetFallback passes if any URL returns correctly", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testGetFallback(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
@ -123,7 +124,7 @@ describe("Test CCIP execution", function () {
|
||||
});
|
||||
it("testPost passes under normal operation", async function () {
|
||||
this.timeout(60000);
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
// testPost(bytes callData = "0x1234")
|
||||
const tx = {
|
||||
to: address, enableCcipRead: true,
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}
|
@ -19,7 +19,7 @@ function forEach(prefix, tests, func) {
|
||||
continue;
|
||||
}
|
||||
// Prepare the testcase
|
||||
retryIt(`Foo ${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
|
||||
retryIt(`${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
|
||||
// Create a provider
|
||||
const provider = getProvider(providerName, networkName);
|
||||
try {
|
||||
|
File diff suppressed because one or more lines are too long
143
lib.esm/_tests/test-providers-errors.js
Normal file
143
lib.esm/_tests/test-providers-errors.js
Normal file
@ -0,0 +1,143 @@
|
||||
import assert from "assert";
|
||||
import { concat, dataSlice, id, toArray, zeroPadValue, isCallException } from "../index.js";
|
||||
import { getProvider, providerNames } from "./create-provider.js";
|
||||
describe("Tests Provider Errors", function () {
|
||||
const panics = [
|
||||
//{ code: 0x00, reason: "GENERIC_PANIC" },
|
||||
{ code: 0x01, reason: "ASSERT_FALSE" },
|
||||
{ code: 0x11, reason: "OVERFLOW" },
|
||||
{ code: 0x12, reason: "DIVIDE_BY_ZERO" },
|
||||
//{ code: 0x21, reason: "ENUM_RANGE_ERROR" },
|
||||
//{ code: 0x22, reason: "BAD_STORAGE_DATA" },
|
||||
{ code: 0x31, reason: "STACK_UNDERFLOW" },
|
||||
{ code: 0x32, reason: "ARRAY_RANGE_ERROR" },
|
||||
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
|
||||
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
|
||||
];
|
||||
const cleanup = [];
|
||||
after(function () {
|
||||
for (const func of cleanup) {
|
||||
func();
|
||||
}
|
||||
});
|
||||
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
|
||||
const networkName = "goerli";
|
||||
for (const { code, reason } of panics) {
|
||||
for (const method of ["call", "estimateGas"]) {
|
||||
for (const providerName of providerNames) {
|
||||
const provider = getProvider(providerName, networkName);
|
||||
if (provider == null) {
|
||||
continue;
|
||||
}
|
||||
// Shutdown socket-based provider, otherwise its socket will prevent
|
||||
// this process from exiting
|
||||
if (provider.destroy) {
|
||||
cleanup.push(() => { provider.destroy(); });
|
||||
}
|
||||
it(`tests panic code: ${providerName}.${method}.${reason}`, async function () {
|
||||
this.timeout(10000);
|
||||
const data = concat([
|
||||
dataSlice(id("testPanic(uint256)"), 0, 4),
|
||||
zeroPadValue(toArray(code), 32)
|
||||
]);
|
||||
const tx = { to: testAddr, data };
|
||||
try {
|
||||
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
|
||||
console.log(result);
|
||||
assert.ok(false, "panic call did not throw");
|
||||
}
|
||||
catch (error) {
|
||||
assert.ok(isCallException(error), "isCallException");
|
||||
// Check some basics
|
||||
assert.equal(error.action, method, `error.action == ${method}`);
|
||||
assert.equal(error.reason, `Panic due to ${reason}(${code})`, "error.reason");
|
||||
// Check the transaciton
|
||||
assert.equal(error.transaction.to, tx.to, `error.transaction.to`);
|
||||
assert.equal(error.transaction.data, tx.data, `error.transaction.data`);
|
||||
// We have no invocation data
|
||||
assert.equal(error.invocation, null, `error.invocation != null`);
|
||||
// Check the revert
|
||||
assert.ok(error.revert != null, "error.revert == null");
|
||||
assert.equal(error.revert.name, "Panic", `error.revert.name`);
|
||||
assert.equal(error.revert.signature, "Panic(uint256)", `error.revert.signature`);
|
||||
assert.equal(error.revert.args.length, 1, `error.revert.args.length`);
|
||||
assert.equal(error.revert.args[0], code, `error.revert.args[0]`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
const customErrors = [
|
||||
{
|
||||
name: "CustomError1",
|
||||
signature: "testCustomError1(bool,uint256,string)",
|
||||
data: "0xdb7342480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
|
||||
//data: "0x852d0c740000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000",
|
||||
message: `execution reverted (unknown custom error)`,
|
||||
reason: null,
|
||||
revert: null,
|
||||
},
|
||||
{
|
||||
name: "Error",
|
||||
signature: "testErrorString(bool,string)",
|
||||
data: "0xb206699b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
|
||||
//data: "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000"
|
||||
message: `execution reverted: "hello world"`,
|
||||
reason: "hello world",
|
||||
revert: {
|
||||
signature: "Error(string)",
|
||||
name: "Error",
|
||||
args: ['hello world']
|
||||
}
|
||||
},
|
||||
];
|
||||
for (const { data, message, name, reason, revert } of customErrors) {
|
||||
for (const method of ["call", "estimateGas"]) {
|
||||
const tx = { to: testAddr, data };
|
||||
for (const providerName of providerNames) {
|
||||
const provider = getProvider(providerName, networkName);
|
||||
if (provider == null) {
|
||||
continue;
|
||||
}
|
||||
// Shutdown socket-based provider, otherwise its socket will prevent
|
||||
// this process from exiting
|
||||
if (provider.destroy) {
|
||||
cleanup.push(() => { provider.destroy(); });
|
||||
}
|
||||
it(`tests custom errors: ${providerName}.${method}.${name}`, async function () {
|
||||
this.timeout(10000);
|
||||
try {
|
||||
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
|
||||
console.log(result);
|
||||
assert.ok(false, "panic call did not throw");
|
||||
}
|
||||
catch (error) {
|
||||
assert.ok(isCallException(error), "isCallException");
|
||||
// Check some basics
|
||||
assert.equal(error.action, method, `error.action == ${method}`);
|
||||
assert.ok(error.message.startsWith(message), "error.message == message");
|
||||
if (reason) {
|
||||
assert.equal(error.reason, reason, "error.reason");
|
||||
}
|
||||
else {
|
||||
assert.ok(error.reason == null, "error.reason != null");
|
||||
}
|
||||
if (revert) {
|
||||
assert.ok(error.revert != null, "error.revert == null");
|
||||
assert.equal(error.revert.name, revert.name, "error.revert.name");
|
||||
assert.equal(error.revert.signature, revert.signature, "error.revert.signature");
|
||||
assert.equal(error.revert.args.length, revert.args.length, "error.revert.args.length");
|
||||
for (let i = 0; i < revert.args.length; i++) {
|
||||
assert.equal(error.revert.args[i], revert.args[i], `error.revert.args[${i}]`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
assert.ok(error.revert == null, "error.revert != null");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=test-providers-errors.js.map
|
1
lib.esm/_tests/test-providers-errors.js.map
Normal file
1
lib.esm/_tests/test-providers-errors.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -1,15 +1,15 @@
|
||||
import assert from "assert";
|
||||
import { connect } from "./create-provider.js";
|
||||
describe("Test EIP-2544 ENS wildcards", function () {
|
||||
const provider = connect("ropsten");
|
||||
const provider = connect("goerli");
|
||||
it("Resolves recursively", async function () {
|
||||
const resolver = await provider.getResolver("ricmoose.hatch.eth");
|
||||
assert.ok(resolver, "failed to get resolver");
|
||||
assert.equal(resolver.address, "0x8fc4C380c5d539aE631daF3Ca9182b40FB21D1ae", "address");
|
||||
assert.equal(resolver.address, "0x15abA1fa74Bfdecd63A71218DC632d4328Db8168", "address");
|
||||
assert.equal(await resolver.supportsWildcard(), true, "supportsWildcard()");
|
||||
// Test pass-through avatar
|
||||
assert.equal(await resolver.getAvatar(), "https:/\/static.ricmoo.com/uploads/profile-06cb9c3031c9.jpg", "getAvatar()");
|
||||
assert.equal(await resolver.getAddress(), "0x4FaBE0A3a4DDd9968A7b4565184Ad0eFA7BE5411", "getAddress()");
|
||||
assert.equal(await resolver.getAddress(), "0x4B711A377B1b3534749FBe5e59Bcf7F94d92EA98", "getAddress()");
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=test-providers-wildcard.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@ -1,2 +1,2 @@
|
||||
export const version = "6.0.0-beta-exports.4";
|
||||
export const version = "6.0.0-beta-exports.5";
|
||||
//# sourceMappingURL=_version.js.map
|
@ -11,6 +11,8 @@ import { NumberCoder } from "./coders/number.js";
|
||||
import { StringCoder } from "./coders/string.js";
|
||||
import { TupleCoder } from "./coders/tuple.js";
|
||||
import { ParamType } from "./fragments.js";
|
||||
import { getAddress } from "../address/index.js";
|
||||
import { getBytes, hexlify, makeError } from "../utils/index.js";
|
||||
const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
|
||||
const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
|
||||
export class AbiCoder {
|
||||
@ -72,5 +74,77 @@ export class AbiCoder {
|
||||
return coder.decode(new Reader(data, loose));
|
||||
}
|
||||
}
|
||||
// https://docs.soliditylang.org/en/v0.8.17/control-structures.html
|
||||
const PanicReasons = new Map();
|
||||
PanicReasons.set(0x00, "GENERIC_PANIC");
|
||||
PanicReasons.set(0x01, "ASSERT_FALSE");
|
||||
PanicReasons.set(0x11, "OVERFLOW");
|
||||
PanicReasons.set(0x12, "DIVIDE_BY_ZERO");
|
||||
PanicReasons.set(0x21, "ENUM_RANGE_ERROR");
|
||||
PanicReasons.set(0x22, "BAD_STORAGE_DATA");
|
||||
PanicReasons.set(0x31, "STACK_UNDERFLOW");
|
||||
PanicReasons.set(0x32, "ARRAY_RANGE_ERROR");
|
||||
PanicReasons.set(0x41, "OUT_OF_MEMORY");
|
||||
PanicReasons.set(0x51, "UNINITIALIZED_FUNCTION_CALL");
|
||||
export function getBuiltinCallException(action, tx, data) {
|
||||
let message = "missing revert data";
|
||||
let reason = null;
|
||||
const invocation = null;
|
||||
let revert = null;
|
||||
if (data) {
|
||||
message = "execution reverted";
|
||||
const bytes = getBytes(data);
|
||||
data = hexlify(data);
|
||||
if (bytes.length % 32 !== 4) {
|
||||
message += " (could not decode reason; invalid data length)";
|
||||
}
|
||||
else if (hexlify(bytes.slice(0, 4)) === "0x08c379a0") {
|
||||
// Error(string)
|
||||
try {
|
||||
reason = defaultAbiCoder.decode(["string"], bytes.slice(4))[0];
|
||||
revert = {
|
||||
signature: "Error(string)",
|
||||
name: "Error",
|
||||
args: [reason]
|
||||
};
|
||||
message += `: ${JSON.stringify(reason)}`;
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not decode reason; invalid data)";
|
||||
}
|
||||
}
|
||||
else if (hexlify(bytes.slice(0, 4)) === "0x4e487b71") {
|
||||
// Panic(uint256)
|
||||
try {
|
||||
const code = Number(defaultAbiCoder.decode(["uint256"], bytes.slice(4))[0]);
|
||||
revert = {
|
||||
signature: "Panic(uint256)",
|
||||
name: "Panic",
|
||||
args: [code]
|
||||
};
|
||||
reason = `Panic due to ${PanicReasons.get(code) || "UNKNOWN"}(${code})`;
|
||||
message += `: ${reason}`;
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
message += " (could not decode panic reason)";
|
||||
}
|
||||
}
|
||||
else {
|
||||
message += " (unknown custom error)";
|
||||
}
|
||||
}
|
||||
const transaction = {
|
||||
to: (tx.to ? getAddress(tx.to) : null),
|
||||
data: (tx.data || "0x")
|
||||
};
|
||||
if (tx.from) {
|
||||
transaction.from = getAddress(tx.from);
|
||||
}
|
||||
return makeError(message, "CALL_EXCEPTION", {
|
||||
action, data, reason, transaction, invocation, revert
|
||||
});
|
||||
}
|
||||
export const defaultAbiCoder = new AbiCoder();
|
||||
//# sourceMappingURL=abi-coder.js.map
|
File diff suppressed because one or more lines are too long
@ -495,7 +495,7 @@ export class ParamType {
|
||||
return value[param.name];
|
||||
});
|
||||
}
|
||||
if (value.length !== this.components.length) {
|
||||
if (result.length !== this.components.length) {
|
||||
throw new Error("array is wrong length");
|
||||
}
|
||||
result.forEach((value, index) => {
|
||||
@ -592,7 +592,7 @@ export class ParamType {
|
||||
});
|
||||
return new ParamType(_guard, name, type, "array", indexed, null, arrayLength, arrayChildren);
|
||||
}
|
||||
if (type.substring(0, 5) === "tuple(" || type[0] === "(") {
|
||||
if (type === "tuple" || type.substring(0, 5) === "tuple(" || type[0] === "(") {
|
||||
const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;
|
||||
const tuple = new ParamType(_guard, name, type, "tuple", indexed, comps, null, null);
|
||||
// @TODO: use lexer to validate and normalize type
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
//////
|
||||
export { AbiCoder, defaultAbiCoder } from "./abi-coder.js";
|
||||
export { AbiCoder, defaultAbiCoder, getBuiltinCallException } from "./abi-coder.js";
|
||||
export { decodeBytes32String, encodeBytes32String } from "./bytes32.js";
|
||||
export { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, NamedFragment, ParamType, StructFragment, } from "./fragments.js";
|
||||
export { checkResultErrors, Indexed, Interface, ErrorDescription, LogDescription, TransactionDescription, Result } from "./interface.js";
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":"AAGA,MAAM;AACN,OAAO,EACH,QAAQ,EACR,eAAe,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAC3D,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAC7D,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EACxD,MAAM,EACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":"AAGA,MAAM;AACN,OAAO,EACH,QAAQ,EACR,eAAe,EACf,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAC3D,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAC7D,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EACxD,MAAM,EACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
|
@ -1,7 +1,7 @@
|
||||
import { keccak256 } from "../crypto/index.js";
|
||||
import { id } from "../hash/index.js";
|
||||
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadValue, isHexString, defineProperties, throwArgumentError, toHex, throwError, makeError } from "../utils/index.js";
|
||||
import { defaultAbiCoder } from "./abi-coder.js";
|
||||
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadValue, isHexString, defineProperties, throwArgumentError, toHex, throwError } from "../utils/index.js";
|
||||
import { defaultAbiCoder, getBuiltinCallException } from "./abi-coder.js";
|
||||
import { checkResultErrors, Result } from "./coders/abstract-coder.js";
|
||||
import { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from "./fragments.js";
|
||||
import { Typed } from "./typed.js";
|
||||
@ -570,65 +570,42 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
|
||||
info: { method: fragment.name, signature: fragment.format() }
|
||||
});
|
||||
}
|
||||
makeError(fragment, _data, tx) {
|
||||
if (typeof (fragment) === "string") {
|
||||
fragment = this.getFunction(fragment);
|
||||
}
|
||||
const data = getBytes(_data);
|
||||
let args = undefined;
|
||||
if (tx) {
|
||||
try {
|
||||
args = this.#abiCoder.decode(fragment.inputs, tx.data || "0x");
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
let errorArgs = undefined;
|
||||
let errorName = undefined;
|
||||
let errorSignature = undefined;
|
||||
let reason = "unknown reason";
|
||||
if (data.length === 0) {
|
||||
reason = "missing error reason";
|
||||
}
|
||||
else if ((data.length % 32) === 4) {
|
||||
makeError(_data, tx) {
|
||||
const data = getBytes(_data, "data");
|
||||
const error = getBuiltinCallException("call", tx, data);
|
||||
// Not a built-in error; try finding a custom error
|
||||
if (!error.message.match(/could not decode/)) {
|
||||
const selector = hexlify(data.slice(0, 4));
|
||||
const builtin = BuiltinErrors[selector];
|
||||
if (builtin) {
|
||||
error.message = "execution reverted (unknown custom error)";
|
||||
try {
|
||||
errorName = builtin.name;
|
||||
errorSignature = builtin.signature;
|
||||
errorArgs = this.#abiCoder.decode(builtin.inputs, data.slice(4));
|
||||
reason = builtin.reason(...errorArgs);
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error); // @TODO: remove
|
||||
}
|
||||
}
|
||||
else {
|
||||
reason = "unknown custom error";
|
||||
const ef = this.getError(selector);
|
||||
try {
|
||||
const error = this.getError(selector);
|
||||
errorName = error.name;
|
||||
errorSignature = error.format();
|
||||
reason = `custom error: ${errorSignature}`;
|
||||
try {
|
||||
errorArgs = this.#abiCoder.decode(error.inputs, data.slice(4));
|
||||
error.revert = {
|
||||
name: ef.name,
|
||||
signature: ef.format(),
|
||||
args: this.#abiCoder.decode(ef.inputs, data.slice(4))
|
||||
};
|
||||
error.reason = error.revert.signature;
|
||||
error.message = `execution reverted: ${error.reason}`;
|
||||
}
|
||||
catch (error) {
|
||||
reason = `custom error: ${errorSignature} (coult not decode error data)`;
|
||||
catch (e) {
|
||||
error.message = `execution reverted (coult not decode custom error)`;
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error); // @TODO: remove
|
||||
}
|
||||
}
|
||||
// Add the invocation, if available
|
||||
const parsed = this.parseTransaction(tx);
|
||||
if (parsed) {
|
||||
error.invocation = {
|
||||
method: parsed.name,
|
||||
signature: parsed.signature,
|
||||
args: parsed.args
|
||||
};
|
||||
}
|
||||
return makeError("call revert exception", "CALL_EXCEPTION", {
|
||||
data: hexlify(data), transaction: null,
|
||||
method: fragment.name, signature: fragment.format(), args,
|
||||
errorArgs, errorName, errorSignature, reason
|
||||
});
|
||||
return error;
|
||||
}
|
||||
/**
|
||||
* Encodes the result data (e.g. from an ``eth_call``) for the
|
||||
|
File diff suppressed because one or more lines are too long
@ -185,18 +185,18 @@ class WrappedMethod extends _WrappedMethodBase() {
|
||||
operation: "call"
|
||||
});
|
||||
}
|
||||
const fragment = this.getFragment(...args);
|
||||
const tx = await this.populateTransaction(...args);
|
||||
let result = "0x";
|
||||
try {
|
||||
result = await runner.call(tx);
|
||||
}
|
||||
catch (error) {
|
||||
if (isCallException(error)) {
|
||||
throw this._contract.interface.makeError(fragment, error.data, tx);
|
||||
if (isCallException(error) && error.data) {
|
||||
throw this._contract.interface.makeError(error.data, tx);
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
const fragment = this.getFragment(...args);
|
||||
return this._contract.interface.decodeFunctionResult(fragment, result);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":"AAeC,CAAC;AAiB4E,CAAC;AAkD9E,CAAC"}
|
||||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":"AAeC,CAAC;AAoB4E,CAAC;AAkD9E,CAAC"}
|
@ -1,8 +1,8 @@
|
||||
import { createHmac } from "./crypto.js";
|
||||
import { createHmac } from "./crypto-browser.js";
|
||||
import { getBytes, hexlify } from "../utils/index.js";
|
||||
let locked = false;
|
||||
const _computeHmac = function (algorithm, key, data) {
|
||||
return "0x" + createHmac(algorithm, key).update(data).digest("hex");
|
||||
return createHmac(algorithm, key).update(data).digest();
|
||||
};
|
||||
let __computeHmac = _computeHmac;
|
||||
export function computeHmac(algorithm, _key, _data) {
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
||||
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
@ -44,18 +44,7 @@ export class Signature {
|
||||
return Signature.getChainId(v);
|
||||
}
|
||||
get yParity() {
|
||||
if (this.v === 27) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
/*
|
||||
// When v is 0 or 1 it is the recid directly
|
||||
if (this.v.isZero()) { return 0; }
|
||||
if (this.v.eq(1)) { return 1; }
|
||||
|
||||
// Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1
|
||||
return this.v.and(1).isZero() ? 1: 0;
|
||||
*/
|
||||
return (this.v === 27) ? 0 : 1;
|
||||
}
|
||||
get yParityAndS() {
|
||||
// The EIP-2098 compact representation
|
||||
@ -100,9 +89,9 @@ export class Signature {
|
||||
r: this.r, s: this.s, v: this.v,
|
||||
};
|
||||
}
|
||||
static create() {
|
||||
return new Signature(_guard, ZeroHash, ZeroHash, 27);
|
||||
}
|
||||
//static create(): Signature {
|
||||
// return new Signature(_guard, ZeroHash, ZeroHash, 27);
|
||||
//}
|
||||
// Get the chain ID from an EIP-155 v
|
||||
static getChainId(v) {
|
||||
const bv = getBigInt(v, "v");
|
||||
@ -133,6 +122,9 @@ export class Signature {
|
||||
return (bv & BN_1) ? 27 : 28;
|
||||
}
|
||||
static from(sig) {
|
||||
if (sig == null) {
|
||||
return new Signature(_guard, ZeroHash, ZeroHash, 27);
|
||||
}
|
||||
const throwError = (message) => {
|
||||
return throwArgumentError(message, "signature", sig);
|
||||
};
|
||||
@ -145,8 +137,8 @@ export class Signature {
|
||||
s[0] &= 0x7f;
|
||||
return new Signature(_guard, r, hexlify(s), v);
|
||||
}
|
||||
if (dataLength(sig) !== 65) {
|
||||
const r = hexlify(sig.slice(0, 32));
|
||||
if (bytes.length === 65) {
|
||||
const r = hexlify(bytes.slice(0, 32));
|
||||
const s = bytes.slice(32, 64);
|
||||
if (s[0] & 0x80) {
|
||||
throwError("non-canonical s");
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
import * as secp256k1 from "@noble/secp256k1";
|
||||
import { concat, getBytes, getBytesCopy, hexlify, toHex, throwArgumentError } from "../utils/index.js";
|
||||
import { concat, dataLength, getBytes, getBytesCopy, hexlify, toHex, assertArgument, throwArgumentError } from "../utils/index.js";
|
||||
import { computeHmac } from "./hmac.js";
|
||||
import { Signature } from "./signature.js";
|
||||
//const N = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");
|
||||
@ -22,9 +22,7 @@ export class SigningKey {
|
||||
get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }
|
||||
get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }
|
||||
sign(digest) {
|
||||
/* @TODO
|
||||
logger.assertArgument(() => (dataLength(digest) === 32), "invalid digest length", "digest", digest);
|
||||
*/
|
||||
assertArgument(dataLength(digest) === 32, "invalid digest length", "digest", digest);
|
||||
const [sigDer, recid] = secp256k1.signSync(getBytesCopy(digest), getBytesCopy(this.#privateKey), {
|
||||
recovered: true,
|
||||
canonical: true
|
||||
@ -56,6 +54,7 @@ export class SigningKey {
|
||||
return hexlify(point.toRawBytes(compressed));
|
||||
}
|
||||
static recoverPublicKey(digest, signature) {
|
||||
assertArgument(dataLength(digest) === 32, "invalid digest length", "digest", digest);
|
||||
const sig = Signature.from(signature);
|
||||
const der = secp256k1.Signature.fromCompact(getBytesCopy(concat([sig.r, sig.s]))).toDERRawBytes();
|
||||
const pubKey = secp256k1.recoverPublicKey(getBytesCopy(digest), der, sig.yParity);
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}
|
@ -7,7 +7,7 @@ export { ZeroAddress, NegativeOne, Zero, One, Two, WeiPerEther, MaxUint256, MinI
|
||||
export { BaseContract, Contract, ContractFactory, ContractEventPayload, ContractTransactionReceipt, ContractTransactionResponse, EventLog, } from "./contract/index.js";
|
||||
export { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync, lock, Signature, SigningKey } from "./crypto/index.js";
|
||||
export { id, isValidName, namehash, dnsEncode, hashMessage, solidityPacked, solidityPackedKeccak256, solidityPackedSha256, TypedDataEncoder } from "./hash/index.js";
|
||||
export { AbstractProvider, FallbackProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
|
||||
export { AbstractProvider, FallbackProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, BrowserProvider, AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
|
||||
//PocketProvider } from "./provider-pocket.js";
|
||||
IpcSocketProvider, SocketProvider, WebSocketProvider, Network } from "./providers/index.js";
|
||||
export { accessListify, computeAddress, recoverAddress, Transaction } from "./transaction/index.js";
|
||||
|
@ -1 +1 @@
|
||||
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,EAAE;AAEF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EACH,mBAAmB,EAAE,mBAAmB,EAExC,QAAQ,EAAE,eAAe,EACzB,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAExF,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,sBAAsB,EACrF,KAAK,GACR,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,UAAU,EAAE,cAAc,EAC1B,gBAAgB,EAAE,iBAAiB,EACtC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACH,WAAW,EACX,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAC7E,QAAQ,EACR,WAAW,EAAE,aAAa,EAC7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACH,YAAY,EAAE,QAAQ,EACtB,eAAe,EACf,oBAAoB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,QAAQ,GAC1F,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EACN,MAAM,EAAE,UAAU,EAClB,IAAI,EACJ,SAAS,EAAE,UAAU,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,EAAE,EACF,WAAW,EAAE,QAAQ,EAAE,SAAS,EAChC,WAAW,EACX,cAAc,EAAE,uBAAuB,EAAE,oBAAoB,EAC7D,gBAAgB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,gBAAgB,EAEhB,gBAAgB,EAChB,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAElD,eAAe,EAEf,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc;AACpF,+CAA+C;AAE/C,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAEpD,OAAO,EACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACH,aAAa,EACb,cAAc,EAAE,cAAc,EAC9B,WAAW,EACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACH,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAC9D,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EACpE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EACnE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EACzC,eAAe,EAAE,OAAO,EACxB,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAClE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EACjD,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EACpE,QAAQ,EAAE,MAAM,EAAE,IAAI,EACtB,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAChD,oBAAoB,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EACjE,cAAc,EACd,SAAS,EAAE,SAAS,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,WAAW,EACX,cAAc,EACd,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EACnD,eAAe,EAAE,oBAAoB,EACrC,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAC5D,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACT,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EACjE,MAAM,sBAAsB,CAAC"}
|
@ -6,6 +6,7 @@
|
||||
// migrate the listener to the static event. We also need to maintain a map
|
||||
// of Signer/ENS name to address so we can sync respond to listenerCount.
|
||||
import { resolveAddress } from "../address/index.js";
|
||||
import { Transaction } from "../transaction/index.js";
|
||||
import { concat, dataLength, dataSlice, hexlify, isHexString, getBigInt, getBytes, getNumber, isCallException, makeError, throwError, throwArgumentError, FetchRequest, toArray, toQuantity, defineProperties, EventPayload, resolveProperties, toUtf8String } from "../utils/index.js";
|
||||
import { EnsResolver } from "./ens-resolver.js";
|
||||
import { formatBlock, formatBlockWithTransactions, formatLog, formatTransactionReceipt, formatTransactionResponse } from "./format.js";
|
||||
@ -508,7 +509,7 @@ export class AbstractProvider {
|
||||
}
|
||||
catch (error) {
|
||||
// CCIP Read OffchainLookup
|
||||
if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === "latest" && transaction.to != null && dataSlice(error.data, 0, 4) === "0x556f1830") {
|
||||
if (!this.disableCcipRead && isCallException(error) && error.data && attempt >= 0 && blockTag === "latest" && transaction.to != null && dataSlice(error.data, 0, 4) === "0x556f1830") {
|
||||
const data = error.data;
|
||||
const txSender = await resolveAddress(transaction.to, this);
|
||||
// Parse the CCIP Read Arguments
|
||||
@ -525,10 +526,16 @@ export class AbstractProvider {
|
||||
// Check the sender of the OffchainLookup matches the transaction
|
||||
if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {
|
||||
return throwError("CCIP Read sender mismatch", "CALL_EXCEPTION", {
|
||||
data, transaction,
|
||||
errorSignature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
|
||||
errorName: "OffchainLookup",
|
||||
errorArgs: ccipArgs.errorArgs
|
||||
action: "call",
|
||||
data,
|
||||
reason: "OffchainLookup",
|
||||
transaction: transaction,
|
||||
invocation: null,
|
||||
revert: {
|
||||
signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
|
||||
name: "OffchainLookup",
|
||||
args: ccipArgs.errorArgs
|
||||
}
|
||||
});
|
||||
}
|
||||
const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);
|
||||
@ -586,8 +593,19 @@ export class AbstractProvider {
|
||||
}
|
||||
// Write
|
||||
async broadcastTransaction(signedTx) {
|
||||
throw new Error();
|
||||
return {};
|
||||
const { blockNumber, hash, network } = await resolveProperties({
|
||||
blockNumber: this.getBlockNumber(),
|
||||
hash: this._perform({
|
||||
method: "broadcastTransaction",
|
||||
signedTransaction: signedTx
|
||||
}),
|
||||
network: this.getNetwork()
|
||||
});
|
||||
const tx = Transaction.from(signedTx);
|
||||
if (tx.hash !== hash) {
|
||||
throw new Error("@TODO: the returned hash did not match");
|
||||
}
|
||||
return this._wrapTransactionResponse(tx, network).replaceableTransaction(blockNumber);
|
||||
}
|
||||
async #getBlock(block, includeTransactions) {
|
||||
// @TODO: Add CustomBlockPlugin check
|
||||
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user