部署以太坊数字货币钱包

环境: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标识

image.png

4、在私链创建成功后,新创建的地址没有金额,怎么才可以有金额?
挖矿可以解决,但是可能需要好几分钟。请注意设置矿工的地址设置
在geth控制台设置:miner.setEtherbase(eth.coinbase);//eth.coinbase就是你想设置的钱包地址

二、下载clone eth-lightwallet代码,并运行在线钱包demo webwallet.html

image.png

1、注意里面的配置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小费也不一样。简单来说:智能合约除了可以转入转出金额,还可以例如投票、自动合约交易等功能

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 通过 geth --help 命令可以查看命令。也可以看Github上的文档Geth用户指南和参考手册 NAME:...
    熊猫大盗阅读 5,529评论 0 3
  • 每个人的曾经,都会有着各种各样千奇百怪的想法或念头,并且对未知的事物充满了无尽的想象。 不用说日子的流逝像水,像沙...
    悄然Edward阅读 329评论 0 7

友情链接更多精彩内容