Contractfuzzer 运行环境的复现

开源代码:gongbell/ContractFuzzer: The Ethereum Smart Contract Fuzzer for Security Vulnerability Detection (ASE 2018)

首先第一步:到Contractfuzzer的仓库中拉取项目源码

第二步:将下载的源码中的 go-Ethereum-cf 和 Ethereum 拉到虚拟机上,我使用的是Ubuntu18.04

第三步:使用go-Ethereum-cf 中的geth在Ethereum重新启动链

./../go-ethereum/build/bin/geth --fast  --identity "TestNode2" --rpc -rpcaddr "0.0.0.0"  --
rpcport "8545" --rpccorsdomain "*" --port "30303" --nodiscover  --rpcapi 
"db,eth,net,web3,miner,net,personal,net,txpool,admin"  --networkid 1900   --datadir 
/home/zheng/桌面/Ethereum --nat "any" --targetgaslimit "9000000000000"  --unlock 0 --
password "pwd.txt"  --mine console 2>>geth.log

其中的 "./../go-ethereum/build/bin/geth" 和 "/home/zheng/桌面/Ethereum" 都是自己虚拟机上的路径,需要改成自己的路径才能生效。

第四步:我们可以查看一下现在私链上面存在哪些账户,可以将自己的账户引入也可以继续使用链上的账户,可以先查看一下现在链上的账户

第五步:引入自己的账户进行交易,可以在钱包metamask上面导出自己的钱包私钥,然后根据私钥导入账户,具体可参照导出私钥,引入Ubuntu中

geth account import ~/pk.txt  

pk.txt是钱包的私钥

 第六步:私链一开始的矿工是"0x2b71cc952c8e3dfe97a696cf5c5b29f8a07de3d8",我们需要将矿工设置为自己的钱包地址

当设置成功的时候会返回true,personal.listAccounts[6]就是前面根据私钥引入的钱包地址

第七步:开启挖矿

Contractfuzzer 运行环境的复现_第1张图片

虽然开启挖矿之后返回的是null,但是已经在开始出块了

第八步:解锁账户,然后就可以发出交易了

Contractfuzzer 运行环境的复现_第2张图片

输入密码之后就可以解锁账户了

第九步:发起交易

web3.eth.sendTransaction({from: web3.eth.accounts[6],to: web3.eth.accounts[1],
value: web3.toWei(1, 'ether'),})

查看交易

eth.getTransaction(“0xdfa3998b46d2fa88b38f62e4a38c197d02bc5075fd465cb8dd46f982127dc5d9”)

 

Contractfuzzer 运行环境的复现_第3张图片可以看到发起交易成功,并且根据交易返回的区块哈希成功找到了交易

到此,我们就可以使用web3 在 Contractfuzzer 的私链上发送交易

注:我们现在只能使用web3发出交易,还不能直接在metamask发起交易,如果想要在metamask上发出交易,需要在启动链的命令中加入 --allow-insecure-unlock

你可能感兴趣的:(Contractfuzzer 运行环境的复现)