1.初始化项

1
2
npm init 
npm init -y

生成package.json文件

2.安装依赖

1
npm install dotenv@^10.0.0 fs@0.0.1-security ganache-cli@^6.12.2 solc@0.8.0 web3@^1.3.5

3.配置env

生成一个.env文件

1
2
PRIVATE_KEY=私钥
INFURA_ID=你的id

4.solidity文件

Incrementer.sol

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

contract Incrementer {
uint256 public number;

constructor(uint256 _initaNumer) {
number = _initaNumer;
}

function increment(uint256 _value) public {
number = number + _value;
}

function reset() public {
number = 0;
}

function getNumber() public view returns (uint256) {
return number;
}
}

5.编写部署文件index.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
let Web3 = require('web3');
let solc = require('solc');
let fs = require('fs');

//从配置中获取私钥
require('dotenv').config();
const privatekey = process.env.PRIVATE_KEY;

//加载合约
//source就是上面的合约的源代码
const source = fs.readFileSync('Incrementer.sol', 'utf8');
// console.log(source);

//编译solidity文件
const input = {
language: 'Solidity',
sources: {
"Incrementer.sol": {
content: source,
},
},
settings: {
outputSelection: {
'*': {
'*': ['*'],
},
},
},
};
// console.log(input);
const tempFile = JSON.parse(solc.compile(JSON.stringify(input)));
// console.log(tempFile);
const contractFile = tempFile.contracts['Incrementer.sol']['Incrementer'];

//获取bin和abi
const bytecode = contractFile.evm.bytecode.object;
const abi = contractFile.abi;
// console.log(abi);
//创建一个web3的提供者
const web3 = new Web3('https://goerli.infura.io/v3/' + process.env.INFURA_ID);

//根据私钥创建账户
const account = web3.eth.accounts.privateKeyToAccount(privatekey);
// console.log("jjk"+account);
const account_from = {
privateKey: privatekey,
accountAddress: account.address,
};
// console.log(account_from);
//部署合约
const Deploy = async () => {
//创建合约实例
const deployContract = new web3.eth.Contract(abi);
//发送部署tx
const deployTx = deployContract.deploy({
data: bytecode,
arguments: [0],
});
//签名tx
console.log(deployTx.encodeABI());
const deployTransaction = await web3.eth.accounts.signTransaction(
{
data: deployTx.encodeABI(),
gas: 8000000,
},
account_from.privateKey
);
const deployReceipt = await web3.eth.sendSignedTransaction(deployTransaction.rawTransaction);
console.log(`Contract deployed at address: ${deployReceipt.contractAddress}`);
};
Deploy()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});

Input编译结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
language: 'Solidity',
sources: {
'Incrementer.sol': {
content: '//SPDX-License-Identifier: Unlicense\r\n' +
'pragma solidity ^0.8.0;\r\n' +
'\r\n' +
'contract Incrementer {\r\n' +
' uint256 public number;\r\n' +
'\r\n' +
' constructor(uint256 _initaNumer) {\r\n' +
' number = _initaNumer;\r\n' +
' }\r\n' +
'\r\n' +
' function increment(uint256 _value) public {\r\n' +
' number = number + _value;\r\n' +
' }\r\n' +
'\r\n' +
' function reset() public {\r\n' +
' number = 0;\r\n' +
' }\r\n' +
'\r\n' +
' function getNumber() public view returns (uint256) {\r\n' +
' return number;\r\n' +
' }\r\n' +
'}\r\n'
}
},
settings: { outputSelection: { '*': [Object] } }
}

tempFile

1
2
3
4
5
{
contracts: { 'Incrementer.sol': { Incrementer: [Object] } },
sources: { 'Incrementer.sol': { id: 0 } }
}
//[object]中放置的就是contractFile

contractFile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
abi: [
{
inputs: [Array],
stateMutability: 'nonpayable',
type: 'constructor'
},
{
inputs: [],
name: 'getNumber',
outputs: [Array],
stateMutability: 'view',
type: 'function'
},
{
inputs: [Array],
name: 'increment',
outputs: [],
stateMutability: 'nonpayable',
type: 'function'
},
{
inputs: [],
name: 'number',
outputs: [Array],
stateMutability: 'view',
type: 'function'
},
{
inputs: [],
name: 'reset',
outputs: [],
stateMutability: 'nonpayable',
type: 'function'
}
],
devdoc: { kind: 'dev', methods: {}, version: 1 },
evm: {
assembly:
bytecode: {
generatedSources: [Array],
linkReferences: {},
object: '608060405234801561001057600080fd5b506040516102d33803806102d383398181016040528101906100329190610054565b806000819055505061009e565b60008151905061004e81610087565b92915050565b60006020828403121561006657600080fd5b60006100748482850161003f565b91505092915050565b6000819050919050565b6100908161007d565b811461009b57600080fd5b50565b610226806100ad6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637cf5dab0146100515780638381f58a1461006d578063d826f88f1461008b578063f2c9ecd814610095575b600080fd5b61006b600480360381019061006691906100f7565b6100b3565b005b6100756100ca565b604051610082919061012f565b60405180910390f35b6100936100d0565b005b61009d6100d9565b6040516100aa919061012f565b60405180910390f35b806000546100c1919061014a565b60008190555050565b60005481565b60008081905550565b60008054905090565b6000813590506100f1816101d9565b92915050565b60006020828403121561010957600080fd5b6000610117848285016100e2565b91505092915050565b610129816101a0565b82525050565b60006020820190506101446000830184610120565b92915050565b6000610155826101a0565b9150610160836101a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610195576101946101aa565b5b828201905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6101e2816101a0565b81146101ed57600080fd5b5056fea2646970667358221220dc31f080c290bb2c97b3b4608162b86a2669d7894c2d9180d867cce6c3c3f9fd64736f6c63430008000033',
opcodes: 'PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2D3 CODESIZE SUB DUP1 PUSH2 0x2D3 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x54 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E DUP2 PUSH2 0x87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x74 DUP5 DUP3 DUP6 ADD PUSH2 0x3F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x90 DUP2 PUSH2 0x7D JUMP JUMPDEST DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x226 DUP1 PUSH2 0xAD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CF5DAB0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8381F58A EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xF2C9ECD8 EQ PUSH2 0x95 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0xF7 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x75 PUSH2 0xCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x82 SWAP2 SWAP1 PUSH2 0x12F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH2 0xD0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x12F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x0 SLOAD PUSH2 0xC1 SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF1 DUP2 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x117 DUP5 DUP3 DUP6 ADD PUSH2 0xE2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x129 DUP2 PUSH2 0x1A0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x144 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x120 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 DUP3 PUSH2 0x1A0 JUMP JUMPDEST SWAP2 POP PUSH2 0x160 DUP4 PUSH2 0x1A0 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x195 JUMPI PUSH2 0x194 PUSH2 0x1AA JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E2 DUP2 PUSH2 0x1A0 JUMP JUMPDEST DUP2 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC BALANCE CREATE DUP1 0xC2 SWAP1 0xBB 0x2C SWAP8 0xB3 0xB4 PUSH1 0x81 PUSH3 0xB86A26 PUSH10 0xD7894C2D9180D867CCE6 0xC3 0xC3 0xF9 REVERT PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ',
sourceMap: '65:378:0:-:0;;;123:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;176:11;167:6;:20;;;;123:72;65:378;;7:143:1;;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;70:80;;;;:::o;156:284::-;;275:2;263:9;254:7;250:23;246:32;243:2;;;291:1;288;281:12;243:2;334:1;359:64;415:7;406:6;395:9;391:22;359:64;:::i;:::-;349:74;;305:128;233:207;;;;:::o;446:77::-;;512:5;501:16;;491:32;;;:::o;529:122::-;602:24;620:5;602:24;:::i;:::-;595:5;592:35;582:2;;641:1;638;631:12;582:2;572:79;:::o;65:378:0:-;;;;;;;'
},
deployedBytecode: {
generatedSources: [Array],
immutableReferences: {},
linkReferences: {},
object: '608060405234801561001057600080fd5b506004361061004c5760003560e01c80637cf5dab0146100515780638381f58a1461006d578063d826f88f1461008b578063f2c9ecd814610095575b600080fd5b61006b600480360381019061006691906100f7565b6100b3565b005b6100756100ca565b604051610082919061012f565b60405180910390f35b6100936100d0565b005b61009d6100d9565b6040516100aa919061012f565b60405180910390f35b806000546100c1919061014a565b60008190555050565b60005481565b60008081905550565b60008054905090565b6000813590506100f1816101d9565b92915050565b60006020828403121561010957600080fd5b6000610117848285016100e2565b91505092915050565b610129816101a0565b82525050565b60006020820190506101446000830184610120565b92915050565b6000610155826101a0565b9150610160836101a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610195576101946101aa565b5b828201905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6101e2816101a0565b81146101ed57600080fd5b5056fea2646970667358221220dc31f080c290bb2c97b3b4608162b86a2669d7894c2d9180d867cce6c3c3f9fd64736f6c63430008000033',
opcodes: 'PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CF5DAB0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8381F58A EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xF2C9ECD8 EQ PUSH2 0x95 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66 SWAP2 SWAP1 PUSH2 0xF7 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x75 PUSH2 0xCA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x82 SWAP2 SWAP1 PUSH2 0x12F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH2 0xD0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xD9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x12F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 PUSH1 0x0 SLOAD PUSH2 0xC1 SWAP2 SWAP1 PUSH2 0x14A JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF1 DUP2 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x117 DUP5 DUP3 DUP6 ADD PUSH2 0xE2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x129 DUP2 PUSH2 0x1A0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x144 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x120 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x155 DUP3 PUSH2 0x1A0 JUMP JUMPDEST SWAP2 POP PUSH2 0x160 DUP4 PUSH2 0x1A0 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x195 JUMPI PUSH2 0x194 PUSH2 0x1AA JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E2 DUP2 PUSH2 0x1A0 JUMP JUMPDEST DUP2 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC BALANCE CREATE DUP1 0xC2 SWAP1 0xBB 0x2C SWAP8 0xB3 0xB4 PUSH1 0x81 PUSH3 0xB86A26 PUSH10 0xD7894C2D9180D867CCE6 0xC3 0xC3 0xF9 REVERT PUSH5 0x736F6C6343 STOP ADDMOD STOP STOP CALLER ',
sourceMap: '65:378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;203:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;93:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;296:53;;;:::i;:::-;;357:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;203:85;274:6;265;;:15;;;;:::i;:::-;256:6;:24;;;;203:85;:::o;93:21::-;;;;:::o;296:53::-;340:1;331:6;:10;;;;296:53::o;357:83::-;399:7;426:6;;419:13;;357:83;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:222::-;;675:2;664:9;660:18;652:26;;688:71;756:1;745:9;741:17;732:6;688:71;:::i;:::-;642:124;;;;:::o;772:305::-;;831:20;849:1;831:20;:::i;:::-;826:25;;865:20;883:1;865:20;:::i;:::-;860:25;;1019:1;951:66;947:74;944:1;941:81;938:2;;;1025:18;;:::i;:::-;938:2;1069:1;1066;1062:9;1055:16;;816:261;;;;:::o;1083:77::-;;1149:5;1138:16;;1128:32;;;:::o;1166:180::-;1214:77;1211:1;1204:88;1311:4;1308:1;1301:15;1335:4;1332:1;1325:15;1352:122;1425:24;1443:5;1425:24;:::i;:::-;1418:5;1415:35;1405:2;;1464:1;1461;1454:12;1405:2;1395:79;:::o'
},
gasEstimates: { creation: [Object], external: [Object] },
legacyAssembly: { '.code': [Array], '.data': [Object] },
methodIdentifiers: {
'getNumber()': 'f2c9ecd8',
'increment(uint256)': '7cf5dab0',
'number()': '8381f58a',
'reset()': 'd826f88f'
}
},
ewasm: { wasm: '' },
metadata: '{"compiler":{"version":"0.8.0+commit.c7dfd78e"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"_initaNumer","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"number","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"Incrementer.sol":"Incrementer"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"Incrementer.sol":{"keccak256":"0xd980fe0b2c634f1f2431b62181463ba4be9642d8a169ce254294bdbf823d0bc7","license":"Unlicense","urls":["bzz-raw://1594f6025a91675a496dc0a122c83d5fd2fc2b1cf56c60b1c96f386f5acc6dea","dweb:/ipfs/QmVgGTrGWMZu1MiRzPyu61DQMjWnJoNfSfbaVc2PPDkC7b"]}},"version":1}',
storageLayout: { storage: [ [Object] ], types: { t_uint256: [Object] } },
userdoc: { kind: 'user', methods: {}, version: 1 }
}