quantumcoin 6.14.2 → 6.14.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/CHANGELOG.md +442 -442
- package/FUNDING.json +10 -10
- package/LICENSE.md +21 -21
- package/README.md +132 -142
- package/SECURITY.md +34 -34
- package/dist/README.md +22 -22
- package/dist/quantumcoin.js +1127 -1324
- package/dist/quantumcoin.js.map +1 -1
- package/dist/quantumcoin.min.js +1 -1
- package/dist/quantumcoin.umd.js +1128 -1327
- package/dist/quantumcoin.umd.js.map +1 -1
- package/dist/quantumcoin.umd.min.js +1 -1
- package/dist/wordlists-extra.js +1 -1
- package/dist/wordlists-extra.js.map +1 -1
- package/dist/wordlists-extra.min.js +1 -1
- package/lib.commonjs/README.md +16 -16
- package/lib.commonjs/_version.js +1 -1
- package/lib.commonjs/crypto/signature.d.ts +3 -76
- package/lib.commonjs/crypto/signature.d.ts.map +1 -1
- package/lib.commonjs/crypto/signature.js +15 -199
- package/lib.commonjs/crypto/signature.js.map +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
- package/lib.commonjs/crypto/signing-key.js +19 -10
- package/lib.commonjs/crypto/signing-key.js.map +1 -1
- package/lib.commonjs/package.json +12 -12
- package/lib.commonjs/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.commonjs/providers/provider-jsonrpc.js +0 -1
- package/lib.commonjs/providers/provider-jsonrpc.js.map +1 -1
- package/lib.commonjs/quantumcoin.d.ts +2 -0
- package/lib.commonjs/quantumcoin.d.ts.map +1 -1
- package/lib.commonjs/quantumcoin.js +11 -5
- package/lib.commonjs/quantumcoin.js.map +1 -1
- package/lib.commonjs/transaction/address.d.ts.map +1 -1
- package/lib.commonjs/transaction/address.js +8 -3
- package/lib.commonjs/transaction/address.js.map +1 -1
- package/lib.commonjs/transaction/transaction.d.ts.map +1 -1
- package/lib.commonjs/transaction/transaction.js +7 -40
- package/lib.commonjs/transaction/transaction.js.map +1 -1
- package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
- package/lib.commonjs/wallet/json-keystore.js +7 -7
- package/lib.commonjs/wallet/json-keystore.js.map +1 -1
- package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/wallet.js +2 -2
- package/lib.commonjs/wallet/wallet.js.map +1 -1
- package/lib.esm/README.md +16 -16
- package/lib.esm/_version.js +1 -1
- package/lib.esm/crypto/signature.d.ts +3 -76
- package/lib.esm/crypto/signature.d.ts.map +1 -1
- package/lib.esm/crypto/signature.js +16 -202
- package/lib.esm/crypto/signature.js.map +1 -1
- package/lib.esm/crypto/signing-key.d.ts +1 -1
- package/lib.esm/crypto/signing-key.d.ts.map +1 -1
- package/lib.esm/crypto/signing-key.js +20 -9
- package/lib.esm/crypto/signing-key.js.map +1 -1
- package/lib.esm/package.json +12 -12
- package/lib.esm/providers/provider-jsonrpc.d.ts +0 -1
- package/lib.esm/providers/provider-jsonrpc.d.ts.map +1 -1
- package/lib.esm/providers/provider-jsonrpc.js +0 -1
- package/lib.esm/providers/provider-jsonrpc.js.map +1 -1
- package/lib.esm/quantumcoin.d.ts +2 -0
- package/lib.esm/quantumcoin.d.ts.map +1 -1
- package/lib.esm/quantumcoin.js +6 -0
- package/lib.esm/quantumcoin.js.map +1 -1
- package/lib.esm/transaction/address.d.ts.map +1 -1
- package/lib.esm/transaction/address.js +8 -2
- package/lib.esm/transaction/address.js.map +1 -1
- package/lib.esm/transaction/transaction.d.ts.map +1 -1
- package/lib.esm/transaction/transaction.js +7 -40
- package/lib.esm/transaction/transaction.js.map +1 -1
- package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
- package/lib.esm/wallet/json-keystore.js +11 -5
- package/lib.esm/wallet/json-keystore.js.map +1 -1
- package/lib.esm/wallet/wallet.d.ts.map +1 -1
- package/lib.esm/wallet/wallet.js +3 -1
- package/lib.esm/wallet/wallet.js.map +1 -1
- package/package.json +6 -5
- package/rollup.config.mjs +50 -50
- package/src.ts/_version.ts +1 -1
- package/src.ts/abi/abi-coder.ts +237 -237
- package/src.ts/abi/bytes32.ts +45 -45
- package/src.ts/abi/coders/abstract-coder.ts +541 -541
- package/src.ts/abi/coders/address.ts +36 -36
- package/src.ts/abi/coders/anonymous.ts +29 -29
- package/src.ts/abi/coders/array.ts +199 -199
- package/src.ts/abi/coders/boolean.ts +27 -27
- package/src.ts/abi/coders/bytes.ts +43 -43
- package/src.ts/abi/coders/fixed-bytes.ts +37 -37
- package/src.ts/abi/coders/null.ts +28 -28
- package/src.ts/abi/coders/number.ts +63 -63
- package/src.ts/abi/coders/string.ts +29 -29
- package/src.ts/abi/coders/tuple.ts +69 -69
- package/src.ts/abi/fragments.ts +1617 -1617
- package/src.ts/abi/index.ts +41 -41
- package/src.ts/abi/interface.ts +1271 -1271
- package/src.ts/abi/typed.ts +796 -796
- package/src.ts/address/address.ts +148 -148
- package/src.ts/address/checks.ts +123 -123
- package/src.ts/address/contract-address.ts +80 -80
- package/src.ts/address/index.ts +57 -57
- package/src.ts/constants/addresses.ts +8 -8
- package/src.ts/constants/hashes.ts +7 -7
- package/src.ts/constants/index.ts +16 -16
- package/src.ts/constants/numbers.ts +35 -35
- package/src.ts/constants/strings.ts +16 -16
- package/src.ts/contract/contract.ts +1120 -1120
- package/src.ts/contract/factory.ts +143 -143
- package/src.ts/contract/index.ts +31 -31
- package/src.ts/contract/types.ts +236 -236
- package/src.ts/contract/wrappers.ts +225 -225
- package/src.ts/crypto/crypto-browser.ts +64 -64
- package/src.ts/crypto/crypto.ts +4 -4
- package/src.ts/crypto/hmac.ts +51 -51
- package/src.ts/crypto/index.ts +59 -59
- package/src.ts/crypto/keccak.ts +54 -54
- package/src.ts/crypto/pbkdf2.ts +55 -55
- package/src.ts/crypto/random.ts +36 -36
- package/src.ts/crypto/ripemd160.ts +43 -43
- package/src.ts/crypto/scrypt.ts +114 -114
- package/src.ts/crypto/sha2.ts +78 -78
- package/src.ts/crypto/signature.ts +145 -349
- package/src.ts/crypto/signing-key.ts +126 -118
- package/src.ts/hash/authorization.ts +38 -38
- package/src.ts/hash/id.ts +17 -17
- package/src.ts/hash/index.ts +18 -18
- package/src.ts/hash/message.ts +51 -51
- package/src.ts/hash/namehash.ts +101 -101
- package/src.ts/hash/solidity.ts +117 -117
- package/src.ts/hash/typed-data.ts +658 -658
- package/src.ts/index.ts +12 -12
- package/src.ts/providers/abstract-provider.ts +1761 -1761
- package/src.ts/providers/abstract-signer.ts +314 -314
- package/src.ts/providers/community.ts +49 -49
- package/src.ts/providers/contracts.ts +42 -42
- package/src.ts/providers/default-provider.ts +96 -96
- package/src.ts/providers/ens-resolver.ts +606 -606
- package/src.ts/providers/format.ts +320 -320
- package/src.ts/providers/formatting.ts +418 -418
- package/src.ts/providers/index.ts +125 -125
- package/src.ts/providers/network.ts +327 -327
- package/src.ts/providers/pagination.ts +8 -8
- package/src.ts/providers/plugin-fallback.ts +35 -35
- package/src.ts/providers/plugins-network.ts +281 -281
- package/src.ts/providers/provider-browser.ts +334 -334
- package/src.ts/providers/provider-fallback.ts +801 -801
- package/src.ts/providers/provider-ipcsocket-browser.ts +3 -3
- package/src.ts/providers/provider-ipcsocket.ts +81 -81
- package/src.ts/providers/provider-jsonrpc.ts +1334 -1335
- package/src.ts/providers/provider-socket.ts +352 -352
- package/src.ts/providers/provider-websocket.ts +103 -103
- package/src.ts/providers/provider.ts +2136 -2136
- package/src.ts/providers/signer-noncemanager.ts +98 -98
- package/src.ts/providers/signer.ts +166 -166
- package/src.ts/providers/subscriber-connection.ts +74 -74
- package/src.ts/providers/subscriber-filterid.ts +199 -199
- package/src.ts/providers/subscriber-polling.ts +321 -321
- package/src.ts/providers/ws-browser.ts +11 -11
- package/src.ts/providers/ws.ts +3 -3
- package/src.ts/quantumcoin.ts +219 -211
- package/src.ts/thirdparty.d.ts +16 -16
- package/src.ts/transaction/accesslist.ts +43 -43
- package/src.ts/transaction/address.ts +35 -31
- package/src.ts/transaction/authorization.ts +14 -14
- package/src.ts/transaction/index.ts +51 -51
- package/src.ts/transaction/transaction.ts +1349 -1379
- package/src.ts/utils/base58.ts +73 -73
- package/src.ts/utils/base64-browser.ts +25 -25
- package/src.ts/utils/base64.ts +56 -56
- package/src.ts/utils/data.ts +199 -199
- package/src.ts/utils/errors.ts +793 -793
- package/src.ts/utils/events.ts +105 -105
- package/src.ts/utils/fetch.ts +970 -970
- package/src.ts/utils/fixednumber.ts +643 -643
- package/src.ts/utils/geturl-browser.ts +81 -81
- package/src.ts/utils/geturl.ts +134 -134
- package/src.ts/utils/index.ts +95 -95
- package/src.ts/utils/maths.ts +240 -240
- package/src.ts/utils/properties.ts +60 -60
- package/src.ts/utils/rlp-decode.ts +104 -104
- package/src.ts/utils/rlp-encode.ts +64 -64
- package/src.ts/utils/rlp.ts +20 -20
- package/src.ts/utils/units.ts +91 -91
- package/src.ts/utils/utf8.ts +325 -325
- package/src.ts/utils/uuid.ts +36 -36
- package/src.ts/wallet/base-wallet.ts +160 -160
- package/src.ts/wallet/index.ts +32 -32
- package/src.ts/wallet/json-keystore.ts +108 -106
- package/src.ts/wallet/utils.ts +147 -147
- package/src.ts/wallet/wallet.ts +138 -139
- package/src.ts/wordlists/bit-reader.ts +35 -35
- package/src.ts/wordlists/decode-owl.ts +58 -58
- package/src.ts/wordlists/decode-owla.ts +33 -33
- package/src.ts/wordlists/generation/encode-latin.ts +370 -370
- package/src.ts/wordlists/index.ts +26 -26
- package/src.ts/wordlists/lang-cz.ts +33 -33
- package/src.ts/wordlists/lang-en.ts +33 -33
- package/src.ts/wordlists/lang-es.ts +35 -35
- package/src.ts/wordlists/lang-fr.ts +34 -34
- package/src.ts/wordlists/lang-it.ts +33 -33
- package/src.ts/wordlists/lang-ja.ts +181 -181
- package/src.ts/wordlists/lang-ko.ts +104 -104
- package/src.ts/wordlists/lang-pt.ts +34 -34
- package/src.ts/wordlists/lang-zh.ts +112 -112
- package/src.ts/wordlists/wordlist-owl.ts +77 -77
- package/src.ts/wordlists/wordlist-owla.ts +41 -41
- package/src.ts/wordlists/wordlist.ts +59 -59
- package/src.ts/wordlists/wordlists-browser.ts +8 -8
- package/src.ts/wordlists/wordlists-extra.ts +9 -9
- package/src.ts/wordlists/wordlists.ts +38 -38
- package/dist/quantumcoin.min.js'.gz' +0 -0
- package/dist/quantumcoin.umd.min.js'.gz' +0 -0
- package/dist/wordlists-extra.min.js'.gz' +0 -0
- package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
- package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-alchemy.js +0 -151
- package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
- package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
- package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-ankr.js +0 -137
- package/lib.commonjs/providers/provider-ankr.js.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
- package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.js +0 -145
- package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
- package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.js +0 -102
- package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
- package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.js +0 -26
- package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
- package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.js +0 -587
- package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
- package/lib.commonjs/providers/provider-infura.d.ts +0 -101
- package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-infura.js +0 -206
- package/lib.commonjs/providers/provider-infura.js.map +0 -1
- package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
- package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-pocket.js +0 -109
- package/lib.commonjs/providers/provider-pocket.js.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
- package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.js +0 -163
- package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
- package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
- package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/hdwallet.js +0 -505
- package/lib.commonjs/wallet/hdwallet.js.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
- package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.js +0 -60
- package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
- package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
- package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
- package/lib.commonjs/wallet/mnemonic.js +0 -169
- package/lib.commonjs/wallet/mnemonic.js.map +0 -1
- package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
- package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/seedwallet.js +0 -8
- package/lib.commonjs/wallet/seedwallet.js.map +0 -1
- package/lib.esm/providers/provider-alchemy.d.ts +0 -50
- package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.esm/providers/provider-alchemy.js +0 -147
- package/lib.esm/providers/provider-alchemy.js.map +0 -1
- package/lib.esm/providers/provider-ankr.d.ts +0 -61
- package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
- package/lib.esm/providers/provider-ankr.js +0 -133
- package/lib.esm/providers/provider-ankr.js.map +0 -1
- package/lib.esm/providers/provider-blockscout.d.ts +0 -59
- package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.esm/providers/provider-blockscout.js +0 -141
- package/lib.esm/providers/provider-blockscout.js.map +0 -1
- package/lib.esm/providers/provider-chainstack.d.ts +0 -46
- package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.esm/providers/provider-chainstack.js +0 -98
- package/lib.esm/providers/provider-chainstack.js.map +0 -1
- package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
- package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.esm/providers/provider-cloudflare.js +0 -22
- package/lib.esm/providers/provider-cloudflare.js.map +0 -1
- package/lib.esm/providers/provider-etherscan.d.ts +0 -147
- package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.esm/providers/provider-etherscan.js +0 -584
- package/lib.esm/providers/provider-etherscan.js.map +0 -1
- package/lib.esm/providers/provider-infura.d.ts +0 -101
- package/lib.esm/providers/provider-infura.d.ts.map +0 -1
- package/lib.esm/providers/provider-infura.js +0 -201
- package/lib.esm/providers/provider-infura.js.map +0 -1
- package/lib.esm/providers/provider-pocket.d.ts +0 -54
- package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
- package/lib.esm/providers/provider-pocket.js +0 -105
- package/lib.esm/providers/provider-pocket.js.map +0 -1
- package/lib.esm/providers/provider-quicknode.d.ts +0 -59
- package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.esm/providers/provider-quicknode.js +0 -159
- package/lib.esm/providers/provider-quicknode.js.map +0 -1
- package/lib.esm/wallet/hdwallet.d.ts +0 -248
- package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
- package/lib.esm/wallet/hdwallet.js +0 -498
- package/lib.esm/wallet/hdwallet.js.map +0 -1
- package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
- package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.esm/wallet/json-crowdsale.js +0 -55
- package/lib.esm/wallet/json-crowdsale.js.map +0 -1
- package/lib.esm/wallet/mnemonic.d.ts +0 -65
- package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
- package/lib.esm/wallet/mnemonic.js +0 -165
- package/lib.esm/wallet/mnemonic.js.map +0 -1
- package/lib.esm/wallet/seedwallet.d.ts +0 -4
- package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
- package/lib.esm/wallet/seedwallet.js +0 -4
- package/lib.esm/wallet/seedwallet.js.map +0 -1
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
|
|
2
|
-
import { Interface } from "../abi/index.js";
|
|
3
|
-
import { getCreateAddress } from "../address/index.js";
|
|
4
|
-
import {
|
|
5
|
-
concat, defineProperties, getBytes, hexlify,
|
|
6
|
-
assert, assertArgument
|
|
7
|
-
} from "../utils/index.js";
|
|
8
|
-
|
|
9
|
-
import { BaseContract, copyOverrides, resolveArgs } from "./contract.js";
|
|
10
|
-
|
|
11
|
-
import type { InterfaceAbi } from "../abi/index.js";
|
|
12
|
-
import type { Addressable } from "../address/index.js";
|
|
13
|
-
import type { ContractRunner } from "../providers/index.js";
|
|
14
|
-
import type { BytesLike } from "../utils/index.js";
|
|
15
|
-
|
|
16
|
-
import type {
|
|
17
|
-
ContractInterface, ContractMethodArgs, ContractDeployTransaction,
|
|
18
|
-
} from "./types.js";
|
|
19
|
-
import type { ContractTransactionResponse } from "./wrappers.js";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// A = Arguments to the constructor
|
|
23
|
-
// I = Interface of deployed contracts
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* A **ContractFactory** is used to deploy a Contract to the blockchain.
|
|
27
|
-
*/
|
|
28
|
-
export class ContractFactory<A extends Array<any> = Array<any>, I = BaseContract> {
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* The Contract Interface.
|
|
32
|
-
*/
|
|
33
|
-
readonly interface!: Interface;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* The Contract deployment bytecode. Often called the initcode.
|
|
37
|
-
*/
|
|
38
|
-
readonly bytecode!: string;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The ContractRunner to deploy the Contract as.
|
|
42
|
-
*/
|
|
43
|
-
readonly runner!: null | ContractRunner;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Create a new **ContractFactory** with %%abi%% and %%bytecode%%,
|
|
47
|
-
* optionally connected to %%runner%%.
|
|
48
|
-
*
|
|
49
|
-
* The %%bytecode%% may be the ``bytecode`` property within the
|
|
50
|
-
* standard Solidity JSON output.
|
|
51
|
-
*/
|
|
52
|
-
constructor(abi: Interface | InterfaceAbi, bytecode: BytesLike | { object: string }, runner?: null | ContractRunner) {
|
|
53
|
-
const iface = Interface.from(abi);
|
|
54
|
-
|
|
55
|
-
// Dereference Solidity bytecode objects and allow a missing `0x`-prefix
|
|
56
|
-
if (bytecode instanceof Uint8Array) {
|
|
57
|
-
bytecode = hexlify(getBytes(bytecode));
|
|
58
|
-
} else {
|
|
59
|
-
if (typeof(bytecode) === "object") { bytecode = bytecode.object; }
|
|
60
|
-
if (!bytecode.startsWith("0x")) { bytecode = "0x" + bytecode; }
|
|
61
|
-
bytecode = hexlify(getBytes(bytecode));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
defineProperties<ContractFactory>(this, {
|
|
65
|
-
bytecode, interface: iface, runner: (runner || null)
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
attach(target: string | Addressable): BaseContract & Omit<I, keyof BaseContract> {
|
|
70
|
-
return new (<any>BaseContract)(target, this.interface, this.runner);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Resolves to the transaction to deploy the contract, passing %%args%%
|
|
75
|
-
* into the constructor.
|
|
76
|
-
*/
|
|
77
|
-
async getDeployTransaction(...args: ContractMethodArgs<A>): Promise<ContractDeployTransaction> {
|
|
78
|
-
let overrides: Omit<ContractDeployTransaction, "data"> = { };
|
|
79
|
-
|
|
80
|
-
const fragment = this.interface.deploy;
|
|
81
|
-
|
|
82
|
-
if (fragment.inputs.length + 1 === args.length) {
|
|
83
|
-
overrides = await copyOverrides(args.pop());
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (fragment.inputs.length !== args.length) {
|
|
87
|
-
throw new Error("incorrect number of arguments to constructor");
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const resolvedArgs = await resolveArgs(this.runner, fragment.inputs, args);
|
|
91
|
-
|
|
92
|
-
const data = concat([ this.bytecode, this.interface.encodeDeploy(resolvedArgs) ]);
|
|
93
|
-
return Object.assign({ }, overrides, { data });
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Resolves to the Contract deployed by passing %%args%% into the
|
|
98
|
-
* constructor.
|
|
99
|
-
*
|
|
100
|
-
* This will resolve to the Contract before it has been deployed to the
|
|
101
|
-
* network, so the [[BaseContract-waitForDeployment]] should be used before
|
|
102
|
-
* sending any transactions to it.
|
|
103
|
-
*/
|
|
104
|
-
async deploy(...args: ContractMethodArgs<A>): Promise<BaseContract & { deploymentTransaction(): ContractTransactionResponse } & Omit<I, keyof BaseContract>> {
|
|
105
|
-
const tx = await this.getDeployTransaction(...args);
|
|
106
|
-
|
|
107
|
-
assert(this.runner && typeof(this.runner.sendTransaction) === "function",
|
|
108
|
-
"factory runner does not support sending transactions", "UNSUPPORTED_OPERATION", {
|
|
109
|
-
operation: "sendTransaction" });
|
|
110
|
-
|
|
111
|
-
const sentTx = await this.runner.sendTransaction(tx);
|
|
112
|
-
const address = getCreateAddress(sentTx);
|
|
113
|
-
return new (<any>BaseContract)(address, this.interface, this.runner, sentTx);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Return a new **ContractFactory** with the same ABI and bytecode,
|
|
118
|
-
* but connected to %%runner%%.
|
|
119
|
-
*/
|
|
120
|
-
connect(runner: null | ContractRunner): ContractFactory<A, I> {
|
|
121
|
-
return new ContractFactory(this.interface, this.bytecode, runner);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Create a new **ContractFactory** from the standard Solidity JSON output.
|
|
126
|
-
*/
|
|
127
|
-
static fromSolidity<A extends Array<any> = Array<any>, I = ContractInterface>(output: any, runner?: ContractRunner): ContractFactory<A, I> {
|
|
128
|
-
assertArgument(output != null, "bad compiler output", "output", output);
|
|
129
|
-
|
|
130
|
-
if (typeof(output) === "string") { output = JSON.parse(output); }
|
|
131
|
-
|
|
132
|
-
const abi = output.abi;
|
|
133
|
-
|
|
134
|
-
let bytecode = "";
|
|
135
|
-
if (output.bytecode) {
|
|
136
|
-
bytecode = output.bytecode;
|
|
137
|
-
} else if (output.evm && output.evm.bytecode) {
|
|
138
|
-
bytecode = output.evm.bytecode;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return new this(abi, bytecode, runner);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
1
|
+
|
|
2
|
+
import { Interface } from "../abi/index.js";
|
|
3
|
+
import { getCreateAddress } from "../address/index.js";
|
|
4
|
+
import {
|
|
5
|
+
concat, defineProperties, getBytes, hexlify,
|
|
6
|
+
assert, assertArgument
|
|
7
|
+
} from "../utils/index.js";
|
|
8
|
+
|
|
9
|
+
import { BaseContract, copyOverrides, resolveArgs } from "./contract.js";
|
|
10
|
+
|
|
11
|
+
import type { InterfaceAbi } from "../abi/index.js";
|
|
12
|
+
import type { Addressable } from "../address/index.js";
|
|
13
|
+
import type { ContractRunner } from "../providers/index.js";
|
|
14
|
+
import type { BytesLike } from "../utils/index.js";
|
|
15
|
+
|
|
16
|
+
import type {
|
|
17
|
+
ContractInterface, ContractMethodArgs, ContractDeployTransaction,
|
|
18
|
+
} from "./types.js";
|
|
19
|
+
import type { ContractTransactionResponse } from "./wrappers.js";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
// A = Arguments to the constructor
|
|
23
|
+
// I = Interface of deployed contracts
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A **ContractFactory** is used to deploy a Contract to the blockchain.
|
|
27
|
+
*/
|
|
28
|
+
export class ContractFactory<A extends Array<any> = Array<any>, I = BaseContract> {
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The Contract Interface.
|
|
32
|
+
*/
|
|
33
|
+
readonly interface!: Interface;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The Contract deployment bytecode. Often called the initcode.
|
|
37
|
+
*/
|
|
38
|
+
readonly bytecode!: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The ContractRunner to deploy the Contract as.
|
|
42
|
+
*/
|
|
43
|
+
readonly runner!: null | ContractRunner;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a new **ContractFactory** with %%abi%% and %%bytecode%%,
|
|
47
|
+
* optionally connected to %%runner%%.
|
|
48
|
+
*
|
|
49
|
+
* The %%bytecode%% may be the ``bytecode`` property within the
|
|
50
|
+
* standard Solidity JSON output.
|
|
51
|
+
*/
|
|
52
|
+
constructor(abi: Interface | InterfaceAbi, bytecode: BytesLike | { object: string }, runner?: null | ContractRunner) {
|
|
53
|
+
const iface = Interface.from(abi);
|
|
54
|
+
|
|
55
|
+
// Dereference Solidity bytecode objects and allow a missing `0x`-prefix
|
|
56
|
+
if (bytecode instanceof Uint8Array) {
|
|
57
|
+
bytecode = hexlify(getBytes(bytecode));
|
|
58
|
+
} else {
|
|
59
|
+
if (typeof(bytecode) === "object") { bytecode = bytecode.object; }
|
|
60
|
+
if (!bytecode.startsWith("0x")) { bytecode = "0x" + bytecode; }
|
|
61
|
+
bytecode = hexlify(getBytes(bytecode));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
defineProperties<ContractFactory>(this, {
|
|
65
|
+
bytecode, interface: iface, runner: (runner || null)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
attach(target: string | Addressable): BaseContract & Omit<I, keyof BaseContract> {
|
|
70
|
+
return new (<any>BaseContract)(target, this.interface, this.runner);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolves to the transaction to deploy the contract, passing %%args%%
|
|
75
|
+
* into the constructor.
|
|
76
|
+
*/
|
|
77
|
+
async getDeployTransaction(...args: ContractMethodArgs<A>): Promise<ContractDeployTransaction> {
|
|
78
|
+
let overrides: Omit<ContractDeployTransaction, "data"> = { };
|
|
79
|
+
|
|
80
|
+
const fragment = this.interface.deploy;
|
|
81
|
+
|
|
82
|
+
if (fragment.inputs.length + 1 === args.length) {
|
|
83
|
+
overrides = await copyOverrides(args.pop());
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (fragment.inputs.length !== args.length) {
|
|
87
|
+
throw new Error("incorrect number of arguments to constructor");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const resolvedArgs = await resolveArgs(this.runner, fragment.inputs, args);
|
|
91
|
+
|
|
92
|
+
const data = concat([ this.bytecode, this.interface.encodeDeploy(resolvedArgs) ]);
|
|
93
|
+
return Object.assign({ }, overrides, { data });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Resolves to the Contract deployed by passing %%args%% into the
|
|
98
|
+
* constructor.
|
|
99
|
+
*
|
|
100
|
+
* This will resolve to the Contract before it has been deployed to the
|
|
101
|
+
* network, so the [[BaseContract-waitForDeployment]] should be used before
|
|
102
|
+
* sending any transactions to it.
|
|
103
|
+
*/
|
|
104
|
+
async deploy(...args: ContractMethodArgs<A>): Promise<BaseContract & { deploymentTransaction(): ContractTransactionResponse } & Omit<I, keyof BaseContract>> {
|
|
105
|
+
const tx = await this.getDeployTransaction(...args);
|
|
106
|
+
|
|
107
|
+
assert(this.runner && typeof(this.runner.sendTransaction) === "function",
|
|
108
|
+
"factory runner does not support sending transactions", "UNSUPPORTED_OPERATION", {
|
|
109
|
+
operation: "sendTransaction" });
|
|
110
|
+
|
|
111
|
+
const sentTx = await this.runner.sendTransaction(tx);
|
|
112
|
+
const address = getCreateAddress(sentTx);
|
|
113
|
+
return new (<any>BaseContract)(address, this.interface, this.runner, sentTx);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Return a new **ContractFactory** with the same ABI and bytecode,
|
|
118
|
+
* but connected to %%runner%%.
|
|
119
|
+
*/
|
|
120
|
+
connect(runner: null | ContractRunner): ContractFactory<A, I> {
|
|
121
|
+
return new ContractFactory(this.interface, this.bytecode, runner);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Create a new **ContractFactory** from the standard Solidity JSON output.
|
|
126
|
+
*/
|
|
127
|
+
static fromSolidity<A extends Array<any> = Array<any>, I = ContractInterface>(output: any, runner?: ContractRunner): ContractFactory<A, I> {
|
|
128
|
+
assertArgument(output != null, "bad compiler output", "output", output);
|
|
129
|
+
|
|
130
|
+
if (typeof(output) === "string") { output = JSON.parse(output); }
|
|
131
|
+
|
|
132
|
+
const abi = output.abi;
|
|
133
|
+
|
|
134
|
+
let bytecode = "";
|
|
135
|
+
if (output.bytecode) {
|
|
136
|
+
bytecode = output.bytecode;
|
|
137
|
+
} else if (output.evm && output.evm.bytecode) {
|
|
138
|
+
bytecode = output.evm.bytecode;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return new this(abi, bytecode, runner);
|
|
142
|
+
}
|
|
143
|
+
}
|
package/src.ts/contract/index.ts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A **Contract** object is a meta-class (a class whose definition is
|
|
3
|
-
* defined at runtime), which communicates with a deployed smart contract
|
|
4
|
-
* on the blockchain and provides a simple JavaScript interface to call
|
|
5
|
-
* methods, send transaction, query historic logs and listen for its events.
|
|
6
|
-
*
|
|
7
|
-
* @_section: api/contract:Contracts [about-contracts]
|
|
8
|
-
*/
|
|
9
|
-
export {
|
|
10
|
-
BaseContract, Contract
|
|
11
|
-
} from "./contract.js";
|
|
12
|
-
|
|
13
|
-
export {
|
|
14
|
-
ContractFactory
|
|
15
|
-
} from "./factory.js";
|
|
16
|
-
|
|
17
|
-
export {
|
|
18
|
-
ContractEventPayload, ContractUnknownEventPayload,
|
|
19
|
-
ContractTransactionReceipt, ContractTransactionResponse,
|
|
20
|
-
EventLog, UndecodedEventLog
|
|
21
|
-
} from "./wrappers.js";
|
|
22
|
-
|
|
23
|
-
export type {
|
|
24
|
-
BaseContractMethod, ConstantContractMethod,
|
|
25
|
-
PostfixOverrides,
|
|
26
|
-
ContractEvent, ContractEventArgs, ContractEventName,
|
|
27
|
-
ContractDeployTransaction,
|
|
28
|
-
ContractInterface, ContractMethod, ContractMethodArgs, ContractTransaction,
|
|
29
|
-
DeferredTopicFilter, Overrides,
|
|
30
|
-
WrappedFallback
|
|
31
|
-
} from "./types.js";
|
|
1
|
+
/**
|
|
2
|
+
* A **Contract** object is a meta-class (a class whose definition is
|
|
3
|
+
* defined at runtime), which communicates with a deployed smart contract
|
|
4
|
+
* on the blockchain and provides a simple JavaScript interface to call
|
|
5
|
+
* methods, send transaction, query historic logs and listen for its events.
|
|
6
|
+
*
|
|
7
|
+
* @_section: api/contract:Contracts [about-contracts]
|
|
8
|
+
*/
|
|
9
|
+
export {
|
|
10
|
+
BaseContract, Contract
|
|
11
|
+
} from "./contract.js";
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
ContractFactory
|
|
15
|
+
} from "./factory.js";
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
ContractEventPayload, ContractUnknownEventPayload,
|
|
19
|
+
ContractTransactionReceipt, ContractTransactionResponse,
|
|
20
|
+
EventLog, UndecodedEventLog
|
|
21
|
+
} from "./wrappers.js";
|
|
22
|
+
|
|
23
|
+
export type {
|
|
24
|
+
BaseContractMethod, ConstantContractMethod,
|
|
25
|
+
PostfixOverrides,
|
|
26
|
+
ContractEvent, ContractEventArgs, ContractEventName,
|
|
27
|
+
ContractDeployTransaction,
|
|
28
|
+
ContractInterface, ContractMethod, ContractMethodArgs, ContractTransaction,
|
|
29
|
+
DeferredTopicFilter, Overrides,
|
|
30
|
+
WrappedFallback
|
|
31
|
+
} from "./types.js";
|