钱包应用
使用LightWallet和Hooked-Web3-Provider创建钱包服务。
1.运行geth实例挖矿并启动HTTP-RPC服务器,允许来自任何域名客户端请求,解锁账户0
geth --dev --rpc --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcport "8545" --mine --unlock=0
2.创建后端
"/var express = require("express");
var app =express( );
app.use(express.static("public"));
app.get("/",function(req,res){
res.sendFile(_dirname + "/public/html/index.html");
})
app.listen(8080);
3.创建前端
前端主要功能包括生成种子,显示种子地址和发送以太币
4.实现HTML代码调用函数保存到main.js
function generate_seed()
{
var new_seed = lightwallet.keystore.generateRandomSeed();
document.getElementById("seed").value = new_seed;
generate_addresses(new_seed);
}
var totalAddresses=0;
function gernerate_address(seed)
{
if(seed == undefined)
{seed = docunment.getElementById("seed").value;
}
if(!lightwallet.keystore.isSeedValid(seed))
{
document.getElementById("info").innerHTML="Pleese enter a valid seed";
return;
}
totalAddresses = prompt("How many addresses do you want to generate");
if(!Number,isInteger(parseInt(totalAddresses)))
{
document.getElementById("info").innerHTML="Please enter valid number of address";
return ;
}
var password = Math.random().toString();
lightwallet.keystore.createVault({
password: password,
seedPhrase:seed
},function (err,ks) {
ks.keyFromPassword(password,function (err,pwDeriverKey) {
if(err)
{document.getElementById("info").innerHTML = err;
}
else
{
ks.generateNewAddress(pwDerivedKey,totalAddresses);
ks.passwordProvider = function (callback) {
callback(null,password);
};
var provider = new HookedWeb3Provider({
host: "http://localhost:8545",
transaction_signer:ks
});
var web3 =new Web3(provider);
var from = document.getElementById("address1").value;
var to = document.getElementById("address2").value;
var value = web3.toWei(document.getElementById("ether").value,"ether");
web3.eth.sendTransaction({
from:from,
to:to,
value:value,
gas:21000
},function(error,result){
if(error)
{document.getElementById("info").innerHTML = error;
}
else
{
document.getElementById("info").innerHTML = "Txn hash: " + result;
}
})
}
});
});
}
执行测试结果: