@witnet/solidity 3.0.4 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/build/contracts/Bech32.json +1 -1
- package/build/contracts/Clonable.json +1 -1
- package/build/contracts/Context.json +1 -1
- package/build/contracts/Create3.json +1 -1
- package/build/contracts/ERC165.json +1 -1
- package/build/contracts/Escrowable.json +1 -1
- package/build/contracts/IChainlinkAggregatorV3.json +1 -1
- package/build/contracts/IERC165.json +1 -1
- package/build/contracts/IERC20.json +1 -1
- package/build/contracts/IERC2362.json +1 -1
- package/build/contracts/IPythChainlinkAggregatorV3.json +1 -1
- package/build/contracts/IWitAppliance.json +1 -1
- package/build/contracts/IWitOracle.json +1 -1
- package/build/contracts/IWitOracleAppliance.json +1 -1
- package/build/contracts/IWitOracleConsumer.json +1 -1
- package/build/contracts/IWitOracleConsumerLegacy.json +1 -1
- package/build/contracts/IWitOracleLegacy.json +1 -1
- package/build/contracts/IWitOracleQueriable.json +1 -1
- package/build/contracts/IWitOracleQueriableConsumer.json +1 -1
- package/build/contracts/IWitOracleQueriableEvents.json +1 -1
- package/build/contracts/IWitOracleQueriableExperimental.json +1 -1
- package/build/contracts/IWitOracleQueriableTrustableReporter.json +1 -1
- package/build/contracts/IWitOracleQueriableTrustlessReporter.json +1 -1
- package/build/contracts/IWitOracleRadonRegistry.json +1 -1
- package/build/contracts/IWitOracleRadonRegistryEvents.json +1 -1
- package/build/contracts/IWitOracleRadonRegistryLegacy.json +1 -1
- package/build/contracts/IWitOracleRadonRequestFactory.json +1 -1
- package/build/contracts/IWitOracleRadonRequestModal.json +1 -1
- package/build/contracts/IWitOracleRadonRequestTemplate.json +1 -1
- package/build/contracts/IWitOracleRequest.json +1 -1
- package/build/contracts/IWitOracleRequestFactory.json +1 -1
- package/build/contracts/IWitOracleRequestFactoryEvents.json +1 -1
- package/build/contracts/IWitOracleRequestTemplate.json +1 -1
- package/build/contracts/IWitOracleTrustableAdmin.json +1 -1
- package/build/contracts/IWitOracleTrustless.json +1 -1
- package/build/contracts/IWitPriceFeeds.json +1 -1
- package/build/contracts/IWitPriceFeedsAdmin.json +1 -1
- package/build/contracts/IWitPriceFeedsConsumer.json +1 -1
- package/build/contracts/IWitPriceFeedsEvents.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacy.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacyAdmin.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacySolver.json +1 -1
- package/build/contracts/IWitPriceFeedsLegacySolverFactory.json +1 -1
- package/build/contracts/IWitPriceFeedsTypes.json +1 -1
- package/build/contracts/IWitPyth.json +1 -1
- package/build/contracts/IWitPythChainlinkAggregator.json +1 -1
- package/build/contracts/IWitPythErrors.json +1 -1
- package/build/contracts/IWitPythEvents.json +1 -1
- package/build/contracts/IWitPythReporter.json +1 -1
- package/build/contracts/IWitRandomness.json +1 -1
- package/build/contracts/IWitRandomnessAdmin.json +1 -1
- package/build/contracts/IWitRandomnessAdminV2.json +1 -1
- package/build/contracts/IWitRandomnessConsumer.json +1 -1
- package/build/contracts/IWitRandomnessEvents.json +1 -1
- package/build/contracts/IWitRandomnessLegacy.json +1 -1
- package/build/contracts/IWitRandomnessTypes.json +1 -1
- package/build/contracts/Initializable.json +1 -1
- package/build/contracts/OVM_GasPriceOracle.json +1 -1
- package/build/contracts/Ownable.json +1 -1
- package/build/contracts/Ownable2Step.json +1 -1
- package/build/contracts/Payable.json +1 -1
- package/build/contracts/Proxiable.json +1 -1
- package/build/contracts/ReentrancyGuard.json +1 -1
- package/build/contracts/Secp256k1.json +1 -1
- package/build/contracts/Slices.json +1 -1
- package/build/contracts/TestBech32.json +1 -1
- package/build/contracts/TestSecp256k1.json +1 -1
- package/build/contracts/Upgradeable.json +1 -1
- package/build/contracts/UsingWitOracle.json +1 -1
- package/build/contracts/UsingWitPriceFeeds.json +1 -1
- package/build/contracts/UsingWitRandomness.json +1 -1
- package/build/contracts/WitOracle.json +2 -13
- package/build/contracts/WitOracleBasePushOnly.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyTrustable.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyTrustless.json +1 -1
- package/build/contracts/WitOracleBasePushOnlyUpgradable.json +1 -1
- package/build/contracts/WitOracleBaseQueriable.json +1 -1
- package/build/contracts/WitOracleBaseQueriableTrustable.json +1 -1
- package/build/contracts/WitOracleBaseQueriableTrustless.json +1 -1
- package/build/contracts/WitOracleBaseQueriableUpgradable.json +1 -1
- package/build/contracts/WitOracleDataLib.json +2 -254
- package/build/contracts/WitOraclePushOnly.json +1 -1
- package/build/contracts/WitOracleRadonEncodingLib.json +2 -13
- package/build/contracts/WitOracleRadonRegistry.json +2 -13
- package/build/contracts/WitOracleRadonRegistryBase.json +1 -1
- package/build/contracts/WitOracleRadonRegistryBaseUpgradable.json +1 -1
- package/build/contracts/WitOracleRadonRegistryData.json +1 -1
- package/build/contracts/WitOracleRadonRegistryDefaultV21.json +1 -1
- package/build/contracts/WitOracleRadonRegistryUpgradableDefault.json +2 -17
- package/build/contracts/WitOracleRadonRegistryUpgradableNoSha256.json +1 -1
- package/build/contracts/WitOracleRadonRegistryUpgradableZkSync.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactory.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryBase.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryBaseUpgradable.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryModals.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryModalsDefault.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryTemplates.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryTemplatesDefault.json +2 -13
- package/build/contracts/WitOracleRadonRequestFactoryUpgradableConfluxCore.json +1 -1
- package/build/contracts/WitOracleRadonRequestFactoryUpgradableDefault.json +2 -13
- package/build/contracts/WitOracleResultStatusLib.json +2 -14
- package/build/contracts/WitOracleTrustableDefault.json +2 -259
- package/build/contracts/WitOracleTrustableExperimental.json +1 -1
- package/build/contracts/WitOracleTrustableObscuro.json +1 -1
- package/build/contracts/WitOracleTrustableOvm2.json +1 -1
- package/build/contracts/WitOracleTrustablePushOnly.json +1 -1
- package/build/contracts/WitOracleTrustableReef.json +1 -1
- package/build/contracts/WitOracleTrustableZkSync.json +1 -1
- package/build/contracts/WitOracleTrustlessDataLib.json +1 -1
- package/build/contracts/WitOracleTrustlessDefaultV22.json +1 -1
- package/build/contracts/WitOracleTrustlessUpgradableDefault.json +1 -1
- package/build/contracts/WitPriceFeeds.json +2 -13
- package/build/contracts/WitPriceFeedsDataLib.json +2 -14
- package/build/contracts/WitPriceFeedsLegacy.json +2 -8
- package/build/contracts/WitPriceFeedsLegacyDataLib.json +2 -84
- package/build/contracts/WitPriceFeedsLegacyUpgradable.json +1 -1
- package/build/contracts/WitPriceFeedsLegacyUpgradableBypass.json +2 -80
- package/build/contracts/WitPriceFeedsSolverBase.json +1 -1
- package/build/contracts/WitPriceFeedsV3.json +1 -1
- package/build/contracts/WitPriceFeedsV3Upgradable.json +2 -17
- package/build/contracts/WitPythChainlinkAggregator.json +1 -1
- package/build/contracts/WitRandomness.json +2 -13
- package/build/contracts/WitRandomnessLegacy.json +1 -1
- package/build/contracts/WitRandomnessV3.json +2 -13
- package/build/contracts/WitRngConsumer.json +1 -1
- package/build/contracts/Witnet.json +1 -1
- package/build/contracts/WitnetBuffer.json +1 -1
- package/build/contracts/WitnetCBOR.json +1 -1
- package/build/contracts/WitnetDeployer.json +2 -13
- package/build/contracts/WitnetDeployerConfluxCore.json +1 -1
- package/build/contracts/WitnetDeployerDeferred.json +1 -1
- package/build/contracts/WitnetDeployerMeter.json +1 -1
- package/build/contracts/WitnetProxy.json +2 -9
- package/build/contracts/WitnetUpgradableBase.json +1 -1
- package/{migrations → dist/migrations}/addresses.json +1 -25
- package/{migrations → dist/migrations}/constructorArgs.json +1 -6
- package/dist/migrations/settings/artifacts.d.ts +95 -0
- package/dist/migrations/settings/artifacts.d.ts.map +1 -0
- package/dist/migrations/settings/artifacts.js +80 -0
- package/dist/migrations/settings/networks.d.ts +593 -0
- package/dist/migrations/settings/networks.d.ts.map +1 -0
- package/dist/migrations/settings/networks.js +593 -0
- package/dist/src/bin/helpers.cjs +350 -0
- package/dist/src/bin/helpers.d.cts +76 -0
- package/dist/src/bin/helpers.d.cts.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +33 -0
- package/dist/src/lib/types.d.ts +99 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +18 -0
- package/dist/src/lib/utils.d.ts +22 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +267 -0
- package/dist/src/lib/wrappers/ContractWrapper.d.ts +47 -0
- package/dist/src/lib/wrappers/ContractWrapper.d.ts.map +1 -0
- package/dist/src/lib/wrappers/ContractWrapper.js +81 -0
- package/dist/src/lib/wrappers/WitAppliance.d.ts +7 -0
- package/dist/src/lib/wrappers/WitAppliance.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitAppliance.js +17 -0
- package/dist/src/lib/wrappers/WitArtifact.d.ts +6 -0
- package/dist/src/lib/wrappers/WitArtifact.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitArtifact.js +16 -0
- package/dist/src/lib/wrappers/WitOracle.d.ts +105 -0
- package/dist/src/lib/wrappers/WitOracle.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracle.js +217 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.d.ts +16 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleConsumer.js +30 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts +102 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleRadonRegistry.js +140 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts +81 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitOracleRadonRequestFactory.js +257 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.d.ts +91 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitPriceFeeds.js +356 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts +14 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitPriceFeedsLegacy.js +64 -0
- package/dist/src/lib/wrappers/WitRandomness.d.ts +55 -0
- package/dist/src/lib/wrappers/WitRandomness.d.ts.map +1 -0
- package/dist/src/lib/wrappers/WitRandomness.js +165 -0
- package/dist/src/lib/wrappers.d.ts +8 -0
- package/dist/src/lib/wrappers.d.ts.map +1 -0
- package/dist/src/lib/wrappers.js +8 -0
- package/package.json +78 -54
- package/scripts/clean.cjs +21 -0
- package/scripts/eth-create2.cjs +38 -0
- package/scripts/eth-create3.cjs +45 -0
- package/scripts/postinstall.cjs +9 -0
- package/scripts/prepare.cjs +27 -0
- package/scripts/vanity2gen.cjs +121 -0
- package/scripts/vanity3gen.cjs +84 -0
- package/scripts/verify-proxies.cjs +50 -0
- package/scripts/verify-truffle.cjs +69 -0
- package/scripts/verify.js +95 -0
- package/scripts/wof-acls.js +17 -0
- package/src/bin/bots/bridge.cjs +0 -0
- package/src/bin/bots/randomizer.cjs +290 -0
- package/src/bin/bots/reporter.cjs +0 -0
- package/src/bin/cli/accounts.cjs +47 -0
- package/src/bin/cli/assets.cjs +466 -0
- package/src/bin/cli/framework.cjs +100 -0
- package/src/bin/cli/gateway.cjs +26 -0
- package/src/bin/cli/networks.cjs +63 -0
- package/src/bin/cli/priceFeeds.cjs +170 -0
- package/src/bin/cli/queries.cjs +217 -0
- package/src/bin/cli/randomness.cjs +367 -0
- package/src/bin/cli/reports.cjs +272 -0
- package/src/bin/cli/wizard.cjs +352 -0
- package/src/bin/helpers.cjs +388 -0
- package/src/bin/index.cjs +407 -0
- package/settings/artifacts.js +0 -71
- package/settings/index.js +0 -49
- package/settings/networks.js +0 -593
- package/settings/solidity.js +0 -11
- package/settings/specs.js +0 -102
- package/src/index.js +0 -96
- package/src/utils.js +0 -305
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Witnet } from "@witnet/sdk";
|
|
2
|
+
import { type BlockTag, Contract, type ContractTransactionReceipt, type TransactionReceipt } from "ethers";
|
|
3
|
+
import type { RandomizeStatus } from "../types.js";
|
|
4
|
+
import { WitAppliance } from "./WitAppliance.js";
|
|
5
|
+
import type { WitOracle } from "./WitOracle.js";
|
|
6
|
+
export declare class WitRandomness extends WitAppliance {
|
|
7
|
+
protected _legacy: Contract;
|
|
8
|
+
protected constructor(witOracle: WitOracle, at: string);
|
|
9
|
+
static at(witOracle: WitOracle, target: string): Promise<WitRandomness>;
|
|
10
|
+
clone(curator: string, options?: {
|
|
11
|
+
evmConfirmations?: number;
|
|
12
|
+
evmGasPrice?: bigint;
|
|
13
|
+
evmTimeout?: number;
|
|
14
|
+
onTransaction?: (TxHash: Witnet.Hash) => any;
|
|
15
|
+
onTransactionReceipt?: (receipt: TransactionReceipt | null) => any;
|
|
16
|
+
}): Promise<ContractTransactionReceipt | TransactionReceipt | null>;
|
|
17
|
+
estimateRandomizeFee(evmGasPrice: bigint): Promise<bigint>;
|
|
18
|
+
fetchRandomnessAfter(evmBlockNumber: bigint): Promise<Witnet.HexString | undefined>;
|
|
19
|
+
fetchRandomnessAfterProof(evmBlockNumber: bigint): Promise<{
|
|
20
|
+
finality: bigint;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
trail: Witnet.Hash;
|
|
23
|
+
uuid: Witnet.Hash;
|
|
24
|
+
}>;
|
|
25
|
+
filterEvents(options: {
|
|
26
|
+
fromBlock: BlockTag;
|
|
27
|
+
toBlock?: BlockTag;
|
|
28
|
+
}): Promise<Array<{
|
|
29
|
+
queryId: bigint;
|
|
30
|
+
randomizeBlock: bigint;
|
|
31
|
+
requester?: string;
|
|
32
|
+
transactionHash: string;
|
|
33
|
+
}>>;
|
|
34
|
+
getEvmBase(): Promise<string>;
|
|
35
|
+
getEvmConsumer(): Promise<Witnet.HexString>;
|
|
36
|
+
getEvmCurator(): Promise<Witnet.HexString>;
|
|
37
|
+
getSettings(): Promise<{
|
|
38
|
+
callbackGasLimit: number;
|
|
39
|
+
extraFeePercentage: number;
|
|
40
|
+
randomizeWaitBlocks: number;
|
|
41
|
+
witCommitteeSize: number;
|
|
42
|
+
witInclusionFees: bigint;
|
|
43
|
+
}>;
|
|
44
|
+
getLastRandomizeBlock(): Promise<bigint>;
|
|
45
|
+
getRandomizeStatus(evmBlockNumber: bigint): Promise<RandomizeStatus>;
|
|
46
|
+
isRandomized(evmBlockNumber: bigint): Promise<boolean>;
|
|
47
|
+
randomize(options?: {
|
|
48
|
+
evmConfirmations?: number;
|
|
49
|
+
evmGasPrice?: bigint;
|
|
50
|
+
evmTimeout?: number;
|
|
51
|
+
onRandomizeTransaction?: (txHash: Witnet.Hash) => any;
|
|
52
|
+
onRandomizeTransactionReceipt?: (receipt: TransactionReceipt | null) => any;
|
|
53
|
+
}): Promise<ContractTransactionReceipt | TransactionReceipt | null>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=WitRandomness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WitRandomness.d.ts","sourceRoot":"","sources":["../../../../src/lib/wrappers/WitRandomness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Contract, } from "ethers";
|
|
2
|
+
import { ABIs } from "../../index.js";
|
|
3
|
+
import { WitAppliance } from "./WitAppliance.js";
|
|
4
|
+
export class WitRandomness extends WitAppliance {
|
|
5
|
+
_legacy;
|
|
6
|
+
constructor(witOracle, at) {
|
|
7
|
+
super(witOracle, "WitRandomnessV3", at);
|
|
8
|
+
this._legacy = new Contract(at, ABIs.WitRandomnessV2, this.signer);
|
|
9
|
+
}
|
|
10
|
+
static async at(witOracle, target) {
|
|
11
|
+
const randomizer = new WitRandomness(witOracle, target);
|
|
12
|
+
try {
|
|
13
|
+
let oracleAddr;
|
|
14
|
+
try {
|
|
15
|
+
oracleAddr = await randomizer.contract.witOracle.staticCall();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
const abi = ["function witnet() public view returns (address)"];
|
|
19
|
+
const contract = new Contract(target, abi, randomizer.signer);
|
|
20
|
+
oracleAddr = await contract.witnet.staticCall();
|
|
21
|
+
}
|
|
22
|
+
if (oracleAddr !== witOracle.address) {
|
|
23
|
+
throw new Error(`WitRandomness at ${target}: mismatching Wit/Oracle address (${oracleAddr})`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw new Error(`WitRandomness at ${target}: cannot fetch Wit/Oracle address\n${error?.stack?.split("\n")[0] || error}`);
|
|
28
|
+
}
|
|
29
|
+
return randomizer;
|
|
30
|
+
}
|
|
31
|
+
async clone(curator, options) {
|
|
32
|
+
const tx = await this.contract.clone.populateTransaction(curator);
|
|
33
|
+
tx.gasPrice = options?.evmGasPrice || tx?.gasPrice;
|
|
34
|
+
return this.signer
|
|
35
|
+
.sendTransaction(tx)
|
|
36
|
+
.then((response) => {
|
|
37
|
+
if (options?.onTransaction) {
|
|
38
|
+
options.onTransaction(response.hash);
|
|
39
|
+
}
|
|
40
|
+
return response.wait(options?.evmConfirmations || 1, options?.evmTimeout);
|
|
41
|
+
})
|
|
42
|
+
.then((receipt) => {
|
|
43
|
+
if (options?.onTransactionReceipt) {
|
|
44
|
+
options.onTransactionReceipt(receipt);
|
|
45
|
+
}
|
|
46
|
+
return receipt;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async estimateRandomizeFee(evmGasPrice) {
|
|
50
|
+
return this.contract
|
|
51
|
+
.getFunction("estimateRandomizeFee(uint256)")
|
|
52
|
+
.staticCall(evmGasPrice);
|
|
53
|
+
}
|
|
54
|
+
async fetchRandomnessAfter(evmBlockNumber) {
|
|
55
|
+
return this.isRandomized(evmBlockNumber).then((isRandomized) => {
|
|
56
|
+
return isRandomized
|
|
57
|
+
? this.contract.fetchRandomnessAfter.staticCall(evmBlockNumber)
|
|
58
|
+
: undefined;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async fetchRandomnessAfterProof(evmBlockNumber) {
|
|
62
|
+
return this.contract.fetchRandomnessAfterProof
|
|
63
|
+
.staticCall(evmBlockNumber)
|
|
64
|
+
.then((result) => ({
|
|
65
|
+
finality: BigInt(result[3]),
|
|
66
|
+
timestamp: Number(result[1]),
|
|
67
|
+
trail: result[2],
|
|
68
|
+
uuid: result[0],
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
async filterEvents(options) {
|
|
72
|
+
const logs = await this._legacy.queryFilter("Randomizing", options.fromBlock, options?.toBlock);
|
|
73
|
+
if (logs && logs.length > 0) {
|
|
74
|
+
return logs
|
|
75
|
+
.filter((log) => !log.removed)
|
|
76
|
+
.map((log) => ({
|
|
77
|
+
queryId: log?.args[3],
|
|
78
|
+
randomizeBlock: log?.args[0],
|
|
79
|
+
transactionHash: log.transactionHash,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return this.contract
|
|
84
|
+
.queryFilter("Randomizing", options.fromBlock, options?.toBlock)
|
|
85
|
+
.then((logs) => logs.filter((log) => !log.removed))
|
|
86
|
+
.then((logs) => logs.map((log) => ({
|
|
87
|
+
queryId: log?.args[2],
|
|
88
|
+
randomizeBlock: log?.args[1],
|
|
89
|
+
requester: log?.args[0],
|
|
90
|
+
transactionHash: log.transactionHash,
|
|
91
|
+
})));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async getEvmBase() {
|
|
95
|
+
return this.contract.base.staticCall().catch((_) => {
|
|
96
|
+
return this._address;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async getEvmConsumer() {
|
|
100
|
+
return this.contract.consumer.staticCall().catch((_) => {
|
|
101
|
+
return this._address;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async getEvmCurator() {
|
|
105
|
+
return this.contract.owner.staticCall();
|
|
106
|
+
}
|
|
107
|
+
async getSettings() {
|
|
108
|
+
const [queryParams, waitingBlocks] = await Promise.all([
|
|
109
|
+
this.contract.getRandomizeQueryParams(),
|
|
110
|
+
this.contract.getRandomizeWaitingBlocks(),
|
|
111
|
+
]);
|
|
112
|
+
return {
|
|
113
|
+
callbackGasLimit: Number(queryParams[0]),
|
|
114
|
+
extraFeePercentage: Number(queryParams[1]),
|
|
115
|
+
randomizeWaitBlocks: Number(waitingBlocks),
|
|
116
|
+
witCommitteeSize: Number(queryParams[2]),
|
|
117
|
+
witInclusionFees: BigInt(queryParams[3]),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
async getLastRandomizeBlock() {
|
|
121
|
+
return this.contract.getFunction("getLastRandomizeBlock()").staticCall();
|
|
122
|
+
}
|
|
123
|
+
async getRandomizeStatus(evmBlockNumber) {
|
|
124
|
+
return this.contract.getRandomizeStatus
|
|
125
|
+
.staticCall(evmBlockNumber)
|
|
126
|
+
.then((result) => {
|
|
127
|
+
switch (Number(result)) {
|
|
128
|
+
case 1:
|
|
129
|
+
return "Awaiting";
|
|
130
|
+
case 2:
|
|
131
|
+
return "Ready";
|
|
132
|
+
case 3:
|
|
133
|
+
return "Error";
|
|
134
|
+
case 4:
|
|
135
|
+
return "Finalizing";
|
|
136
|
+
}
|
|
137
|
+
return "Void";
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
async isRandomized(evmBlockNumber) {
|
|
141
|
+
return this.contract.isRandomized.staticCall(evmBlockNumber);
|
|
142
|
+
}
|
|
143
|
+
async randomize(options) {
|
|
144
|
+
const evmGasPrice = options?.evmGasPrice || (await this.provider.getFeeData()).gasPrice || 0n;
|
|
145
|
+
const evmRandomizeFee = await this.estimateRandomizeFee(evmGasPrice);
|
|
146
|
+
const evmTransaction = await this.contract
|
|
147
|
+
.getFunction("randomize()")
|
|
148
|
+
.populateTransaction();
|
|
149
|
+
evmTransaction.gasPrice = evmGasPrice || evmTransaction?.gasPrice;
|
|
150
|
+
evmTransaction.value = evmRandomizeFee;
|
|
151
|
+
return this.signer
|
|
152
|
+
.sendTransaction(evmTransaction)
|
|
153
|
+
.then((response) => {
|
|
154
|
+
if (options?.onRandomizeTransaction)
|
|
155
|
+
options.onRandomizeTransaction(response.hash);
|
|
156
|
+
return response.wait(options?.evmConfirmations || 1, options?.evmTimeout);
|
|
157
|
+
})
|
|
158
|
+
.then((receipt) => {
|
|
159
|
+
if (options?.onRandomizeTransactionReceipt)
|
|
160
|
+
options.onRandomizeTransactionReceipt(receipt);
|
|
161
|
+
return receipt;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0UmFuZG9tbmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvd3JhcHBlcnMvV2l0UmFuZG9tbmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRU4sUUFBUSxHQUtSLE1BQU0sUUFBUSxDQUFBO0FBQ2YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUdoRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFlBQVk7SUFDcEMsT0FBTyxDQUFVO0lBRTNCLFlBQXNCLFNBQW9CLEVBQUUsRUFBVTtRQUNyRCxLQUFLLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDZCxTQUFvQixFQUNwQixNQUFjO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELElBQUksQ0FBQztZQUNKLElBQUksVUFBVSxDQUFBO1lBQ2QsSUFBSSxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQzlELENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO2dCQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDN0QsVUFBVSxHQUFHLE1BQU0s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QUFRO2FBQzdELFdBQVcsQ0FBQyxhQUFhLENBQUM7YUFDMUIsbUJBQW1CLEVBQUUsQ0FBQTtRQUN2QixjQUFjLENBQUMsUUFBUSxHQUFHLFdBQVcsSUFBSSxjQUFjLEVBQUUsUUFBUSxDQUFBO1FBQ2pFLGNBQWMsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFBO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDaEIsZUFBZSxDQUFDLGNBQWMsQ0FBQzthQUMvQixJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQ2xDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNuQixPQUFPLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxFQUM5QixPQUFPLEVBQUUsVUFBVSxDQUNuQixDQUFBO1FBQ0YsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakIsSUFBSSxPQUFPLEVBQUUsNkJBQTZCO2dCQUN6QyxPQUFPLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDL0MsT0FBTyxPQUFPLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV2l0bmV0IH0gZnJvbSBcIkB3aXRuZXQvc2RrXCJcbmltcG9ydCB7XG5cdHR5cGUgQmxvY2tUYWcsXG5cdENvbnRyYWN0LFxuXHR0eXBlIENvbnRyYWN0VHJhbnNhY3Rpb24sXG5cdHR5cGUgQ29udHJhY3RUcmFuc2FjdGlvblJlY2VpcHQsXG5cdHR5cGUgRXZlbnRMb2csXG5cdHR5cGUgVHJhbnNhY3Rpb25SZWNlaXB0LFxufSBmcm9tIFwiZXRoZXJzXCJcbmltcG9ydCB7IEFCSXMgfSBmcm9tIFwiLi4vLi4vaW5kZXguanNcIlxuaW1wb3J0IHR5cGUgeyBSYW5kb21pemVTdGF0dXMgfSBmcm9tIFwiLi4vdHlwZXMuanNcIlxuXG5pbXBvcnQgeyBXaXRBcHBsaWFuY2UgfSBmcm9tIFwiLi9XaXRBcHBsaWFuY2UuanNcIlxuaW1wb3J0IHR5cGUgeyBXaXRPcmFjbGUgfSBmcm9tIFwiLi9XaXRPcmFjbGUuanNcIlxuXG5leHBvcnQgY2xhc3MgV2l0UmFuZG9tbmVzcyBleHRlbmRzIFdpdEFwcGxpYW5jZSB7XG5cdHByb3RlY3RlZCBfbGVnYWN5OiBDb250cmFjdFxuXG5cdHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih3aXRPcmFjbGU6IFdpdE9yYWNsZSwgYXQ6IHN0cmluZykge1xuXHRcdHN1cGVyKHdpdE9yYWNsZSwgXCJXaXRSYW5kb21uZXNzVjNcIiwgYXQpXG5cdFx0dGhpcy5fbGVnYWN5ID0gbmV3IENvbnRyYWN0KGF0LCBBQklzLldpdFJhbmRvbW5lc3NWMiwgdGhpcy5zaWduZXIpXG5cdH1cblxuXHRzdGF0aWMgYXN5bmMgYXQoXG5cdFx0d2l0T3JhY2xlOiBXaXRPcmFjbGUsXG5cdFx0dGFyZ2V0OiBzdHJpbmcsXG5cdCk6IFByb21pc2U8V2l0UmFuZG9tbmVzcz4ge1xuXHRcdGNvbnN0IHJhbmRvbWl6ZXIgPSBuZXcgV2l0UmFuZG9tbmVzcyh3aXRPcmFjbGUsIHRhcmdldClcblx0XHR0cnkge1xuXHRcdFx0bGV0IG9yYWNsZUFkZHJcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9yYWNsZUFkZHIgPSBhd2FpdCByYW5kb21pemVyLmNvbnRyYWN0LndpdE9yYWNsZS5zdGF0aWNDYWxsKClcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRjb25zdCBhYmkgPSBbXCJmdW5jdGlvbiB3aXRuZXQoKSBwdWJsaWMgdmlldyByZXR1cm5zIChhZGRyZXNzKVwiXVxuXHRcdFx0XHRjb25zdCBjb250cmFjdCA9IG5ldyBDb250cmFjdCh0YXJnZXQsIGFiaSwgcmFuZG9taXplci5zaWduZXIpXG5cdFx0XHRcdG9yYWNsZUFkZHIgPSBhd2FpdCBjb250cmFjdC53aXRuZXQuc3RhdGljQ2FsbCgpXG5cdFx0XHR9XG5cdFx0XHRpZiAob3JhY2xlQWRkciAhPT0gd2l0T3JhY2xlLmFkZHJlc3MpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdGBXaXRSYW5kb21uZXNzIGF0ICR7dGFyZ2V0fTogbWlzbWF0Y2hpbmcgV2l0L09yYWNsZSBhZGRyZXNzICgke29yYWNsZUFkZHJ9KWAsXG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdGBXaXRSYW5kb21uZXNzIGF0ICR7dGFyZ2V0fTogY2Fubm90IGZldGNoIFdpdC9PcmFjbGUgYWRkcmVzc1xcbiR7XG5cdFx0XHRcdFx0ZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvclxuXHRcdFx0XHR9YCxcblx0XHRcdClcblx0XHR9XG5cdFx0cmV0dXJuIHJhbmRvbWl6ZXJcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBjbG9uZShcblx0XHRjdXJhdG9yOiBzdHJpbmcsXG5cdFx0b3B0aW9ucz86IHtcblx0XHRcdGV2bUNvbmZpcm1hdGlvbnM/OiBudW1iZXJcblx0XHRcdGV2bUdhc1ByaWNlPzogYmlnaW50XG5cdFx0XHRldm1UaW1lb3V0PzogbnVtYmVyXG5cdFx0XHRvblRyYW5zYWN0aW9uPzogKFR4SGFzaDogV2l0bmV0Lkhhc2gpID0+IGFueVxuXHRcdFx0b25UcmFuc2FjdGlvblJlY2VpcHQ/OiAocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbCkgPT4gYW55XG5cdFx0fSxcblx0KTogUHJvbWlzZTxDb250cmFjdFRyYW5zYWN0aW9uUmVjZWlwdCB8IFRyYW5zYWN0aW9uUmVjZWlwdCB8IG51bGw+IHtcblx0XHRjb25zdCB0eDogQ29udHJhY3RUcmFuc2FjdGlvbiA9XG5cdFx0XHRhd2FpdCB0aGlzLmNvbnRyYWN0LmNsb25lLnBvcHVsYXRlVHJhbnNhY3Rpb24oY3VyYXRvcilcblx0XHR0eC5nYXNQcmljZSA9IG9wdGlvbnM/LmV2bUdhc1ByaWNlIHx8IHR4Py5nYXNQcmljZVxuXHRcdHJldHVybiB0aGlzLnNpZ25lclxuXHRcdFx0LnNlbmRUcmFuc2FjdGlvbih0eClcblx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0XHRpZiAob3B0aW9ucz8ub25UcmFuc2FjdGlvbikge1xuXHRcdFx0XHRcdG9wdGlvbnMub25UcmFuc2FjdGlvbihyZXNwb25zZS5oYXNoKVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZXNwb25zZS53YWl0KFxuXHRcdFx0XHRcdG9wdGlvbnM/LmV2bUNvbmZpcm1hdGlvbnMgfHwgMSxcblx0XHRcdFx0XHRvcHRpb25zPy5ldm1UaW1lb3V0LFxuXHRcdFx0XHQpXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHJlY2VpcHQpID0+IHtcblx0XHRcdFx0aWYgKG9wdGlvbnM/Lm9uVHJhbnNhY3Rpb25SZWNlaXB0KSB7XG5cdFx0XHRcdFx0b3B0aW9ucy5vblRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiByZWNlaXB0XG5cdFx0XHR9KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGVzdGltYXRlUmFuZG9taXplRmVlKGV2bUdhc1ByaWNlOiBiaWdpbnQpOiBQcm9taXNlPGJpZ2ludD4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHQuZ2V0RnVuY3Rpb24oXCJlc3RpbWF0ZVJhbmRvbWl6ZUZlZSh1aW50MjU2KVwiKVxuXHRcdFx0LnN0YXRpY0NhbGwoZXZtR2FzUHJpY2UpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hSYW5kb21uZXNzQWZ0ZXIoXG5cdFx0ZXZtQmxvY2tOdW1iZXI6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxXaXRuZXQuSGV4U3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIHRoaXMuaXNSYW5kb21pemVkKGV2bUJsb2NrTnVtYmVyKS50aGVuKChpc1JhbmRvbWl6ZWQpID0+IHtcblx0XHRcdHJldHVybiBpc1JhbmRvbWl6ZWRcblx0XHRcdFx0PyB0aGlzLmNvbnRyYWN0LmZldGNoUmFuZG9tbmVzc0FmdGVyLnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdFx0XHRcdDogdW5kZWZpbmVkXG5cdFx0fSlcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBmZXRjaFJhbmRvbW5lc3NBZnRlclByb29mKGV2bUJsb2NrTnVtYmVyOiBiaWdpbnQpOiBQcm9taXNlPHtcblx0XHRmaW5hbGl0eTogYmlnaW50XG5cdFx0dGltZXN0YW1wOiBudW1iZXJcblx0XHR0cmFpbDogV2l0bmV0Lkhhc2hcblx0XHR1dWlkOiBXaXRuZXQuSGFzaFxuXHR9PiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZmV0Y2hSYW5kb21uZXNzQWZ0ZXJQcm9vZlxuXHRcdFx0LnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdFx0XHQudGhlbigocmVzdWx0KSA9PiAoe1xuXHRcdFx0XHRmaW5hbGl0eTogQmlnSW50KHJlc3VsdFszXSksXG5cdFx0XHRcdHRpbWVzdGFtcDogTnVtYmVyKHJlc3VsdFsxXSksXG5cdFx0XHRcdHRyYWlsOiByZXN1bHRbMl0sXG5cdFx0XHRcdHV1aWQ6IHJlc3VsdFswXSxcblx0XHRcdH0pKVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGZpbHRlckV2ZW50cyhvcHRpb25zOiB7XG5cdFx0ZnJvbUJsb2NrOiBCbG9ja1RhZ1xuXHRcdHRvQmxvY2s/OiBCbG9ja1RhZ1xuXHR9KTogUHJvbWlzZTxcblx0XHRBcnJheTx7XG5cdFx0XHRxdWVyeUlkOiBiaWdpbnRcblx0XHRcdHJhbmRvbWl6ZUJsb2NrOiBiaWdpbnRcblx0XHRcdHJlcXVlc3Rlcj86IHN0cmluZ1xuXHRcdFx0dHJhbnNhY3Rpb25IYXNoOiBzdHJpbmdcblx0XHR9PlxuXHQ+IHtcblx0XHRjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5fbGVnYWN5LnF1ZXJ5RmlsdGVyKFxuXHRcdFx0XCJSYW5kb21pemluZ1wiLFxuXHRcdFx0b3B0aW9ucy5mcm9tQmxvY2ssXG5cdFx0XHRvcHRpb25zPy50b0Jsb2NrLFxuXHRcdClcblx0XHRpZiAobG9ncyAmJiBsb2dzLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBsb2dzXG5cdFx0XHRcdC5maWx0ZXIoKGxvZykgPT4gIWxvZy5yZW1vdmVkKVxuXHRcdFx0XHQubWFwKChsb2cpID0+ICh7XG5cdFx0XHRcdFx0cXVlcnlJZDogKGxvZyBhcyBFdmVudExvZyk/LmFyZ3NbM10sXG5cdFx0XHRcdFx0cmFuZG9taXplQmxvY2s6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzBdLFxuXHRcdFx0XHRcdHRyYW5zYWN0aW9uSGFzaDogbG9nLnRyYW5zYWN0aW9uSGFzaCxcblx0XHRcdFx0fSkpXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRyYWN0XG5cdFx0XHRcdC5xdWVyeUZpbHRlcihcIlJhbmRvbWl6aW5nXCIsIG9wdGlvbnMuZnJvbUJsb2NrLCBvcHRpb25zPy50b0Jsb2NrKVxuXHRcdFx0XHQudGhlbigobG9ncykgPT4gbG9ncy5maWx0ZXIoKGxvZykgPT4gIWxvZy5yZW1vdmVkKSlcblx0XHRcdFx0LnRoZW4oKGxvZ3MpID0+XG5cdFx0XHRcdFx0bG9ncy5tYXAoKGxvZykgPT4gKHtcblx0XHRcdFx0XHRcdHF1ZXJ5SWQ6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzJdLFxuXHRcdFx0XHRcdFx0cmFuZG9taXplQmxvY2s6IChsb2cgYXMgRXZlbnRMb2cpPy5hcmdzWzFdLFxuXHRcdFx0XHRcdFx0cmVxdWVzdGVyOiAobG9nIGFzIEV2ZW50TG9nKT8uYXJnc1swXSxcblx0XHRcdFx0XHRcdHRyYW5zYWN0aW9uSGFzaDogbG9nLnRyYW5zYWN0aW9uSGFzaCxcblx0XHRcdFx0XHR9KSksXG5cdFx0XHRcdClcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQmFzZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRyYWN0LmJhc2Uuc3RhdGljQ2FsbCgpLmNhdGNoKChfKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYWRkcmVzc1xuXHRcdH0pXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQ29uc3VtZXIoKTogUHJvbWlzZTxXaXRuZXQuSGV4U3RyaW5nPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuY29uc3VtZXIuc3RhdGljQ2FsbCgpLmNhdGNoKChfKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYWRkcmVzc1xuXHRcdH0pXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RXZtQ3VyYXRvcigpOiBQcm9taXNlPFdpdG5ldC5IZXhTdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5vd25lci5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRTZXR0aW5ncygpOiBQcm9taXNlPHtcblx0XHRjYWxsYmFja0dhc0xpbWl0OiBudW1iZXJcblx0XHRleHRyYUZlZVBlcmNlbnRhZ2U6IG51bWJlclxuXHRcdHJhbmRvbWl6ZVdhaXRCbG9ja3M6IG51bWJlclxuXHRcdHdpdENvbW1pdHRlZVNpemU6IG51bWJlclxuXHRcdHdpdEluY2x1c2lvbkZlZXM6IGJpZ2ludFxuXHR9PiB7XG5cdFx0Y29uc3QgW3F1ZXJ5UGFyYW1zLCB3YWl0aW5nQmxvY2tzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcblx0XHRcdHRoaXMuY29udHJhY3QuZ2V0UmFuZG9taXplUXVlcnlQYXJhbXMoKSxcblx0XHRcdHRoaXMuY29udHJhY3QuZ2V0UmFuZG9taXplV2FpdGluZ0Jsb2NrcygpLFxuXHRcdF0pXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbGxiYWNrR2FzTGltaXQ6IE51bWJlcihxdWVyeVBhcmFtc1swXSksXG5cdFx0XHRleHRyYUZlZVBlcmNlbnRhZ2U6IE51bWJlcihxdWVyeVBhcmFtc1sxXSksXG5cdFx0XHRyYW5kb21pemVXYWl0QmxvY2tzOiBOdW1iZXIod2FpdGluZ0Jsb2NrcyksXG5cdFx0XHR3aXRDb21taXR0ZWVTaXplOiBOdW1iZXIocXVlcnlQYXJhbXNbMl0pLFxuXHRcdFx0d2l0SW5jbHVzaW9uRmVlczogQmlnSW50KHF1ZXJ5UGFyYW1zWzNdKSxcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0TGFzdFJhbmRvbWl6ZUJsb2NrKCk6IFByb21pc2U8YmlnaW50PiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuZ2V0RnVuY3Rpb24oXCJnZXRMYXN0UmFuZG9taXplQmxvY2soKVwiKS5zdGF0aWNDYWxsKClcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXRSYW5kb21pemVTdGF0dXMoXG5cdFx0ZXZtQmxvY2tOdW1iZXI6IGJpZ2ludCxcblx0KTogUHJvbWlzZTxSYW5kb21pemVTdGF0dXM+IHtcblx0XHRyZXR1cm4gdGhpcy5jb250cmFjdC5nZXRSYW5kb21pemVTdGF0dXNcblx0XHRcdC5zdGF0aWNDYWxsKGV2bUJsb2NrTnVtYmVyKVxuXHRcdFx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKE51bWJlcihyZXN1bHQpKSB7XG5cdFx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdFx0cmV0dXJuIFwiQXdhaXRpbmdcIlxuXHRcdFx0XHRcdGNhc2UgMjpcblx0XHRcdFx0XHRcdHJldHVybiBcIlJlYWR5XCJcblx0XHRcdFx0XHRjYXNlIDM6XG5cdFx0XHRcdFx0XHRyZXR1cm4gXCJFcnJvclwiXG5cdFx0XHRcdFx0Y2FzZSA0OlxuXHRcdFx0XHRcdFx0cmV0dXJuIFwiRmluYWxpemluZ1wiXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFwiVm9pZFwiXG5cdFx0XHR9KVxuXHR9XG5cblx0cHVibGljIGFzeW5jIGlzUmFuZG9taXplZChldm1CbG9ja051bWJlcjogYmlnaW50KTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0cmV0dXJuIHRoaXMuY29udHJhY3QuaXNSYW5kb21pemVkLnN0YXRpY0NhbGwoZXZtQmxvY2tOdW1iZXIpXG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgcmFuZG9taXplKG9wdGlvbnM/OiB7XG5cdFx0ZXZtQ29uZmlybWF0aW9ucz86IG51bWJlclxuXHRcdGV2bUdhc1ByaWNlPzogYmlnaW50XG5cdFx0ZXZtVGltZW91dD86IG51bWJlclxuXHRcdG9uUmFuZG9taXplVHJhbnNhY3Rpb24/OiAodHhIYXNoOiBXaXRuZXQuSGFzaCkgPT4gYW55XG5cdFx0b25SYW5kb21pemVUcmFuc2FjdGlvblJlY2VpcHQ/OiAocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbCkgPT4gYW55XG5cdH0pOiBQcm9taXNlPENvbnRyYWN0VHJhbnNhY3Rpb25SZWNlaXB0IHwgVHJhbnNhY3Rpb25SZWNlaXB0IHwgbnVsbD4ge1xuXHRcdGNvbnN0IGV2bUdhc1ByaWNlID1cblx0XHRcdG9wdGlvbnM/LmV2bUdhc1ByaWNlIHx8IChhd2FpdCB0aGlzLnByb3ZpZGVyLmdldEZlZURhdGEoKSkuZ2FzUHJpY2UgfHwgMG5cblx0XHRjb25zdCBldm1SYW5kb21pemVGZWUgPSBhd2FpdCB0aGlzLmVzdGltYXRlUmFuZG9taXplRmVlKGV2bUdhc1ByaWNlKVxuXHRcdGNvbnN0IGV2bVRyYW5zYWN0aW9uOiBDb250cmFjdFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5jb250cmFjdFxuXHRcdFx0LmdldEZ1bmN0aW9uKFwicmFuZG9taXplKClcIilcblx0XHRcdC5wb3B1bGF0ZVRyYW5zYWN0aW9uKClcblx0XHRldm1UcmFuc2FjdGlvbi5nYXNQcmljZSA9IGV2bUdhc1ByaWNlIHx8IGV2bVRyYW5zYWN0aW9uPy5nYXNQcmljZVxuXHRcdGV2bVRyYW5zYWN0aW9uLnZhbHVlID0gZXZtUmFuZG9taXplRmVlXG5cdFx0cmV0dXJuIHRoaXMuc2lnbmVyXG5cdFx0XHQuc2VuZFRyYW5zYWN0aW9uKGV2bVRyYW5zYWN0aW9uKVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGlmIChvcHRpb25zPy5vblJhbmRvbWl6ZVRyYW5zYWN0aW9uKVxuXHRcdFx0XHRcdG9wdGlvbnMub25SYW5kb21pemVUcmFuc2FjdGlvbihyZXNwb25zZS5oYXNoKVxuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2Uud2FpdChcblx0XHRcdFx0XHRvcHRpb25zPy5ldm1Db25maXJtYXRpb25zIHx8IDEsXG5cdFx0XHRcdFx0b3B0aW9ucz8uZXZtVGltZW91dCxcblx0XHRcdFx0KVxuXHRcdFx0fSlcblx0XHRcdC50aGVuKChyZWNlaXB0KSA9PiB7XG5cdFx0XHRcdGlmIChvcHRpb25zPy5vblJhbmRvbWl6ZVRyYW5zYWN0aW9uUmVjZWlwdClcblx0XHRcdFx0XHRvcHRpb25zLm9uUmFuZG9taXplVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpXG5cdFx0XHRcdHJldHVybiByZWNlaXB0XG5cdFx0XHR9KVxuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./wrappers/WitOracle.js";
|
|
2
|
+
export * from "./wrappers/WitOracleConsumer.js";
|
|
3
|
+
export * from "./wrappers/WitOracleRadonRegistry.js";
|
|
4
|
+
export * from "./wrappers/WitOracleRadonRequestFactory.js";
|
|
5
|
+
export * from "./wrappers/WitPriceFeeds.js";
|
|
6
|
+
export * from "./wrappers/WitPriceFeedsLegacy.js";
|
|
7
|
+
export * from "./wrappers/WitRandomness.js";
|
|
8
|
+
//# sourceMappingURL=wrappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrappers.d.ts","sourceRoot":"","sources":["../../../src/lib/wrappers.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./wrappers/WitOracle.js";
|
|
2
|
+
export * from "./wrappers/WitOracleConsumer.js";
|
|
3
|
+
export * from "./wrappers/WitOracleRadonRegistry.js";
|
|
4
|
+
export * from "./wrappers/WitOracleRadonRequestFactory.js";
|
|
5
|
+
export * from "./wrappers/WitPriceFeeds.js";
|
|
6
|
+
export * from "./wrappers/WitPriceFeedsLegacy.js";
|
|
7
|
+
export * from "./wrappers/WitRandomness.js";
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dyYXBwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsNkJBQTZCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRPcmFjbGUuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0T3JhY2xlQ29uc3VtZXIuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0T3JhY2xlUmFkb25SZWdpc3RyeS5qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRPcmFjbGVSYWRvblJlcXVlc3RGYWN0b3J5LmpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3dyYXBwZXJzL1dpdFByaWNlRmVlZHMuanNcIlxuZXhwb3J0ICogZnJvbSBcIi4vd3JhcHBlcnMvV2l0UHJpY2VGZWVkc0xlZ2FjeS5qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi93cmFwcGVycy9XaXRSYW5kb21uZXNzLmpzXCJcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/solidity",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"description": "Wit/Oracle Solidity Framework for EVM-compatible chains",
|
|
5
5
|
"author": "Witnet Foundation <info@witnet.foundation>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,89 +10,113 @@
|
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"keywords": [
|
|
13
|
-
"bridge",
|
|
14
13
|
"witnet",
|
|
15
|
-
"
|
|
14
|
+
"wit/oracle",
|
|
15
|
+
"solidity",
|
|
16
|
+
"oracle",
|
|
17
|
+
"bridge",
|
|
18
|
+
"web3",
|
|
19
|
+
"arbitrum",
|
|
20
|
+
"avalanche",
|
|
21
|
+
"base",
|
|
22
|
+
"celo",
|
|
23
|
+
"conflux",
|
|
24
|
+
"cronos",
|
|
25
|
+
"doge",
|
|
26
|
+
"ethereum",
|
|
27
|
+
"gnosis",
|
|
28
|
+
"kaia",
|
|
29
|
+
"kava",
|
|
30
|
+
"kcc",
|
|
31
|
+
"moonbeam",
|
|
32
|
+
"optimism",
|
|
33
|
+
"polygon",
|
|
34
|
+
"scroll",
|
|
35
|
+
"unichain",
|
|
36
|
+
"ten",
|
|
37
|
+
"worldchain"
|
|
16
38
|
],
|
|
39
|
+
"bin": {
|
|
40
|
+
"witeth": "src/bin/index.cjs",
|
|
41
|
+
"witnet-ethers": "src/bin/index.cjs",
|
|
42
|
+
"witnet-solidity": "src/bin/index.cjs",
|
|
43
|
+
"randomizer": "src/bin/bots/randomizer.cjs"
|
|
44
|
+
},
|
|
17
45
|
"exports": {
|
|
18
|
-
".":
|
|
46
|
+
".": {
|
|
47
|
+
"default": "./dist/src/index.js",
|
|
48
|
+
"require": "./dist/src/index.js",
|
|
49
|
+
"types": "./dist/src/*.d.ts"
|
|
50
|
+
},
|
|
19
51
|
"./contracts/*": "./contracts/",
|
|
20
|
-
"./utils":
|
|
52
|
+
"./utils": {
|
|
53
|
+
"default": "./dist/src/lib/utils.js",
|
|
54
|
+
"require": "./dist/src/lib/utils.js",
|
|
55
|
+
"types": "./dist/src/lib/*.d.ts"
|
|
56
|
+
}
|
|
21
57
|
},
|
|
22
58
|
"files": [
|
|
23
59
|
"artifacts",
|
|
24
60
|
"build/contracts",
|
|
61
|
+
"dist",
|
|
25
62
|
"contracts",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"src"
|
|
63
|
+
"scripts",
|
|
64
|
+
"src/bin"
|
|
29
65
|
],
|
|
30
66
|
"dependencies": {
|
|
31
|
-
"
|
|
32
|
-
"
|
|
67
|
+
"@witnet/sdk": "^1.2.2",
|
|
68
|
+
"cbor": "^10.0.11",
|
|
69
|
+
"cross-env": "^10.1.0",
|
|
70
|
+
"dotenv": "^17.2.3",
|
|
71
|
+
"ethers": "^6.15.0",
|
|
72
|
+
"ethrpc-gateway": "^2.3.1",
|
|
73
|
+
"inquirer": "^8.2.7",
|
|
74
|
+
"lodash.merge": "^4.6.2",
|
|
75
|
+
"moment": "^2.30.1",
|
|
76
|
+
"node-cron": "^4.2.1",
|
|
77
|
+
"promise-poller": "^1.9.1"
|
|
33
78
|
},
|
|
34
79
|
"devDependencies": {
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"@matterlabs/hardhat-zksync-solc": "^1.5.1",
|
|
38
|
-
"@matterlabs/hardhat-zksync-upgradable": "^1.10.0",
|
|
39
|
-
"@matterlabs/hardhat-zksync-verify": "^1.9.0",
|
|
40
|
-
"@nomicfoundation/hardhat-ethers": "^4.0.1",
|
|
41
|
-
"@nomicfoundation/hardhat-toolbox": "^6.1.0",
|
|
42
|
-
"@nomicfoundation/hardhat-verify": "^3.0.2",
|
|
80
|
+
"@biomejs/biome": "^2.3.4",
|
|
81
|
+
"@nomicfoundation/hardhat-verify": "^3.0.5",
|
|
43
82
|
"@openzeppelin/contracts": "^5.4.0",
|
|
44
83
|
"@openzeppelin/contracts-upgradeable": "^5.4.0",
|
|
84
|
+
"@types/lodash.merge": "^4.6.9",
|
|
85
|
+
"@types/node": "^24.10.0",
|
|
45
86
|
"ado-contracts": "1.0.0",
|
|
46
|
-
"
|
|
47
|
-
"chai": "^4.5.0",
|
|
48
|
-
"custom-error-test-helper": "^1.0.6",
|
|
49
|
-
"eslint": "^8.57.1",
|
|
50
|
-
"eslint-config-standard": "^17.1.0",
|
|
51
|
-
"eslint-plugin-import": "^2.32.0",
|
|
52
|
-
"eslint-plugin-n": "^16.6.2",
|
|
53
|
-
"eslint-plugin-promise": "^6.6.0",
|
|
87
|
+
"chai": "^6.2.0",
|
|
54
88
|
"eth-gas-reporter": "^0.2.27",
|
|
55
89
|
"eth-helpers": "^1.3.1",
|
|
56
|
-
"hardhat": "^3.0.
|
|
57
|
-
"
|
|
58
|
-
"nanoassert": "^2.0.0",
|
|
90
|
+
"hardhat": "^3.0.11",
|
|
91
|
+
"nanoassert": "^3.0.1",
|
|
59
92
|
"sha3-wasm": "^1.0.0",
|
|
60
|
-
"solhint": "^
|
|
93
|
+
"solhint": "^6.0.1",
|
|
61
94
|
"truffle": "^5.11.5",
|
|
62
|
-
"truffle-assertions": "^0.9.2",
|
|
63
|
-
"truffle-flattener": "^1.6.0",
|
|
64
95
|
"truffle-plugin-verify": "^0.6.7",
|
|
65
|
-
"
|
|
66
|
-
"
|
|
96
|
+
"typescript": "^5.9.3",
|
|
97
|
+
"utf-8-validate": "^5.0.10",
|
|
98
|
+
"web3": "^4.16.0"
|
|
67
99
|
},
|
|
68
100
|
"scripts": {
|
|
69
|
-
"
|
|
70
|
-
"clean
|
|
101
|
+
"build": "tsc -p tsconfig.json",
|
|
102
|
+
"clean": "npm run clean:artifacts && npm run clean:build && npm run clean:cache && npm run clean:dist",
|
|
103
|
+
"clean:artifacts": "node ./scripts/clean.cjs artifacts",
|
|
71
104
|
"clean:build": "node ./scripts/clean.cjs build",
|
|
72
|
-
"clean:cache": "node ./scripts/clean.cjs cache
|
|
73
|
-
"clean:
|
|
105
|
+
"clean:cache": "node ./scripts/clean.cjs cache",
|
|
106
|
+
"clean:dist": "node ./scripts/clean.cjs dist",
|
|
74
107
|
"compile": "npx truffle compile --all --config ./truffle-config.cjs",
|
|
75
|
-
"console": "npx
|
|
76
|
-
"
|
|
77
|
-
"flatten:all": "pnpm run clean && pnpm run flatten:core && pnpm run flatten:apps && pnpm run flatten:libs && pnpm run flatten:proxy",
|
|
78
|
-
"flatten:apps": "pnpm run flatten contracts/apps/",
|
|
79
|
-
"flatten:core": "pnpm run flatten contracts/core/",
|
|
80
|
-
"flatten:libs": "pnpm run flatten contracts/libs/WitOracleResultErrorsLib.sol && pnpm run flatten contracts/libs/WitOracleRadonEncodingLib.sol && pnpm run flatten contracts/libs/WitPriceFeedsLegacyDataLib.sol",
|
|
81
|
-
"flatten:proxy": "pnpm run flatten contracts/core/WitnetProxy.sol",
|
|
82
|
-
"fmt:js": "eslint \"**/*.cjs\"",
|
|
108
|
+
"console": "npx truffle console",
|
|
109
|
+
"fmt:js": "npx biome check",
|
|
83
110
|
"fmt:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\"",
|
|
84
|
-
"fmt!:js": "
|
|
111
|
+
"fmt!:js": "npx biome check --write --unsafe",
|
|
85
112
|
"fmt!:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\" --fix",
|
|
86
113
|
"fmt!": "pnpm run fmt!:js && pnpm run fmt!:sol",
|
|
87
114
|
"fmt": "pnpm run fmt:js && pnpm run fmt:sol",
|
|
88
115
|
"deploy": "npx truffle migrate --config ./truffle-config.cjs",
|
|
89
|
-
"ops:
|
|
90
|
-
"ops:
|
|
91
|
-
"
|
|
92
|
-
"test": "npx truffle test",
|
|
116
|
+
"ops:wrb:acls": "npx truffle migrate --config ./truffle-config.cjs --migrations_directory ./migrations/ops/wrb/acls --compile-none --network",
|
|
117
|
+
"ops:curator": "npx truffle migrate --config ./truffle-config.cjs --migrations_directory ./migrations/ops/wrb/curator --compile-none --network",
|
|
118
|
+
"postinstall": "node ./scripts/postinstall.cjs",
|
|
93
119
|
"verify": "npx hardhat run ./scripts/verify.js 2>&1",
|
|
94
|
-
"
|
|
95
|
-
"zksync:deploy": "npx hardhat --config migrations/zksync/hardhat.config.js deploy-zksync:contract --deployment-type create2 --verify --contract-name",
|
|
96
|
-
"zksync:verify": "npx hardhat --config migrations/zksync/hardhat.config.js verify"
|
|
120
|
+
"witeth": "cross-env-shell WITNET_SDK_RADON_ASSETS_PATH='../..' node ./src/bin/index.cjs"
|
|
97
121
|
}
|
|
98
122
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const exec = require("node:child_process").execSync
|
|
2
|
+
const os = require("node:os")
|
|
3
|
+
const fs = require("node:fs")
|
|
4
|
+
|
|
5
|
+
if (process.argv.length < 3) {
|
|
6
|
+
console.log(`Usage: ${0} ${1} /path/to/be/cleaned`)
|
|
7
|
+
process.exit(0)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
process.argv.slice(2).forEach((target) => {
|
|
11
|
+
if (fs.existsSync(target)) {
|
|
12
|
+
if (os.type() === "Windows_NT") {
|
|
13
|
+
target = target.replace(/\//g, "\\")
|
|
14
|
+
exec(`del ${target}\\ /f /q /s`)
|
|
15
|
+
exec(`rmdir ${target}\\ /q /s`)
|
|
16
|
+
} else {
|
|
17
|
+
target = target.replace(/\\/g, "/")
|
|
18
|
+
exec(`rm -rf ${target}`)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
})
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const assert = require("nanoassert")
|
|
2
|
+
const { utils } = require("eth-helpers")
|
|
3
|
+
const keccak = require("sha3-wasm").keccak256
|
|
4
|
+
|
|
5
|
+
const prefix = Buffer.from([0xff])
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generate Ethereum CREATE2 address
|
|
9
|
+
*
|
|
10
|
+
* @param {string|Buffer} address Ethereum address of creator contract as
|
|
11
|
+
* string or as a 20 byte `Buffer`
|
|
12
|
+
* @param {string|Buffer} salt 256 bit salt as either string or 32 byte `Buffer`
|
|
13
|
+
* @param {string|Buffer} initCode init_code as string or Buffer
|
|
14
|
+
* @returns {string} result address as hex encoded string. Not
|
|
15
|
+
* checksum'ed. This can be done with
|
|
16
|
+
* `eth-checksum` or similar modules
|
|
17
|
+
*/
|
|
18
|
+
module.exports = function create2(address, salt, initCode) {
|
|
19
|
+
if (typeof address === "string") address = utils.parse.address(address)
|
|
20
|
+
if (typeof salt === "string") salt = utils.parse.uint256(salt)
|
|
21
|
+
if (typeof initCode === "string") initCode = utils.parse.bytes(initCode)
|
|
22
|
+
|
|
23
|
+
assert(address.byteLength === 20, "address must be 20 bytes")
|
|
24
|
+
assert(salt.byteLength === 32, "salt must be 32 bytes")
|
|
25
|
+
assert(initCode.byteLength != null, "initCode must be Buffer")
|
|
26
|
+
|
|
27
|
+
const codeHash = keccak().update(initCode).digest()
|
|
28
|
+
|
|
29
|
+
return utils.format.address(
|
|
30
|
+
keccak()
|
|
31
|
+
.update(prefix)
|
|
32
|
+
.update(address)
|
|
33
|
+
.update(salt)
|
|
34
|
+
.update(codeHash)
|
|
35
|
+
.digest()
|
|
36
|
+
.slice(-20),
|
|
37
|
+
)
|
|
38
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const assert = require("nanoassert")
|
|
2
|
+
const { utils } = require("eth-helpers")
|
|
3
|
+
const keccak = require("sha3-wasm").keccak256
|
|
4
|
+
|
|
5
|
+
const factoryPrefix = Buffer.from([0xff])
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generate Ethereum CREATE3-library address
|
|
9
|
+
*
|
|
10
|
+
* @param {string|Buffer} address Ethereum address of creator contract as
|
|
11
|
+
* string or as a 20 byte `Buffer`
|
|
12
|
+
* @param {string|Buffer} salt 256 bit salt as either string or 32 byte `Buffer`
|
|
13
|
+
* @returns {string} result address as hex encoded string. Not
|
|
14
|
+
* checksum'ed. This can be done with
|
|
15
|
+
* `eth-checksum` or similar modules
|
|
16
|
+
*/
|
|
17
|
+
module.exports = function create3(address, salt) {
|
|
18
|
+
if (typeof address === "string") address = utils.parse.address(address)
|
|
19
|
+
if (typeof salt === "string") salt = utils.parse.uint256(salt)
|
|
20
|
+
|
|
21
|
+
assert(address.byteLength === 20, "address must be 20 bytes")
|
|
22
|
+
assert(salt.byteLength === 32, "salt must be 32 bytes")
|
|
23
|
+
|
|
24
|
+
const factoryHash = utils.parse.uint256(
|
|
25
|
+
"0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f",
|
|
26
|
+
)
|
|
27
|
+
const factoryAddr = keccak()
|
|
28
|
+
.update(factoryPrefix)
|
|
29
|
+
.update(address)
|
|
30
|
+
.update(salt)
|
|
31
|
+
.update(factoryHash)
|
|
32
|
+
.digest()
|
|
33
|
+
.slice(-20)
|
|
34
|
+
|
|
35
|
+
assert(factoryAddr.byteLength === 20, "address must be 20 bytes")
|
|
36
|
+
|
|
37
|
+
return utils.format.address(
|
|
38
|
+
keccak()
|
|
39
|
+
.update(Buffer.from([0xd6, 0x94]))
|
|
40
|
+
.update(factoryAddr)
|
|
41
|
+
.update(Buffer.from([0x01]))
|
|
42
|
+
.digest()
|
|
43
|
+
.slice(-20),
|
|
44
|
+
)
|
|
45
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const fs = require("node:fs")
|
|
3
|
+
if (
|
|
4
|
+
!fs.existsSync(".no-postinstall") &&
|
|
5
|
+
!fs.existsSync(`${process.env.INIT_CWD}/.env_witnet`)
|
|
6
|
+
) {
|
|
7
|
+
console.info(`Copying .env_witnet file from ${process.env.INIT_CWD}...`)
|
|
8
|
+
fs.cpSync(".env_witnet", `${process.env.INIT_CWD}/.env_witnet`)
|
|
9
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const exec = require("node:child_process").execSync
|
|
2
|
+
const os = require("node:os")
|
|
3
|
+
const fs = require("node:fs")
|
|
4
|
+
|
|
5
|
+
if (fs.existsSync("./artifacts")) {
|
|
6
|
+
if (os.type() === "Windows_NT") {
|
|
7
|
+
exec("del /s /q artifacts\\*.dbg.json")
|
|
8
|
+
} else {
|
|
9
|
+
exec('find ./artifacts -name "*.dbg.json" -exec rm -r {} \\;')
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (fs.existsSync("./build/contracts")) {
|
|
14
|
+
exec('sed -i -- "/\bsourcePath\b/d" ./build/contracts/*.json')
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (fs.existsSync("./migrations/frosts")) {
|
|
18
|
+
exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/*.json')
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (fs.existsSync("./migrations/frosts/apps")) {
|
|
22
|
+
exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/apps/*.json')
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (fs.existsSync("./migrations/frosts/core")) {
|
|
26
|
+
exec('sed -i -- "/\bsourcePath\b/d" ./migrations/frosts/core/*.json')
|
|
27
|
+
}
|