环境:windows下搭建的以太坊私链
由于web3的局限性,我们采用https://github.com/ConsenSys/eth-lightwallet作为我们的主要框架。
一、搭建以太坊私链环境geth
具体操作这里就不说啦,这里大概介绍一下遇到的问题
1、geth与ethereumWallet有什么区别
geth是命令行操作的,可以进行以太坊的很多操作,如:挖矿、rpc等等
ethereumWallet只是钱包功能,可以查询、转账、创建合约。
2、私链启动的时候报错,创世区块没有设置好,很多文章是很旧的,所以创世区块初始化失败了。
{
"config": {
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x02000000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
如果还有其他错误,可以参考:
https://blog.csdn.net/superswords/article/details/75049323
3、若本地启动成功后,钱包打开初始化界面的右上角应该有PRIVATE-NET标识
4、在私链创建成功后,新创建的地址没有金额,怎么才可以有金额?
挖矿可以解决,但是可能需要好几分钟。请注意设置矿工的地址设置
在geth控制台设置:miner.setEtherbase(eth.coinbase);//eth.coinbase就是你想设置的钱包地址
二、下载clone eth-lightwallet代码,并运行在线钱包demo webwallet.html
image.png1、注意里面的配置host,我开始配置为我的远程服务器的节点,但是失败了,现在改为链接本地的节点
function setWeb3Provider(keystore) {
var web3Provider = new HookedWeb3Provider({
host: "http://127.0.0.1:8545",
transaction_signer: keystore
});
web3.setProvider(web3Provider);
}
测试方法:geth attach http://127.0.0.1:8545
2、启动geth命令,留意--rpc --rpccorsdomain "*"字段意思
geth -datadir "./chain" --port "30303" --rpc --rpccorsdomain "*" --rpcapi "db,eth,net,web3" --nodiscover console 2>>eth_output.log
--rpc 启动HTTP-RPC服务(基于HTTP的)
--rpcaddr value HTTP-RPC服务器监听地址(default: "localhost")
--rpcport value HTTP-RPC服务器监听端口(default: 8545)
--rpcapi value 指定需要调用的HTTP-RPC API接口,默认只有eth,net,web3
--ws 启动WS-RPC服务(基于WebService的)
--wsaddr value WS-RPC服务器监听地址(default: "localhost")
--wsport value WS-RPC服务器监听端口(default: 8546)
--wsapi value 指定需要调用的WS-RPC API接口,默认只有eth,net,web3
--wsorigins value 指定接收websocket请求的来源
--ipcdisable 禁掉IPC-RPC服务
--ipcpath 指定IPC socket/pipe文件目录(明确指定路径)
--rpccorsdomain value 指定一个可以接收请求来源的以逗号间隔的域名列表(浏览器访问的话,要强制指定该选项)
--jspath loadScript JavaScript根目录用来加载脚本 (default: ".")
--exec value 执行JavaScript声明
--preload value 指定一个可以预加载到控制台的JavaScript文件,其中包含一个以逗号分隔的列表
3、智能合约与钱包账户之间的关系
在ethereumwallet上可以发布自己编写的solidity合约代码,每一个合约都有自己的钱包地址,合约相当于也是一个独立个体,只不过有已经写好的代码逻辑约束,代码不同,自动计算出来的gas小费也不一样。简单来说:智能合约除了可以转入转出金额,还可以例如投票、自动合约交易等功能
网友评论