2. 添加账户¶
2.1. 引入web3.js文件¶
2.2. 新建index.html¶
<script src="js/web3.js"></script>
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="js/web3.js"></script>
<input type="button" value="获取账号">
<input type="button" value="创建账号">
<input type="button" value="解锁账号">
<input type="button" value="获取余额">
<input type="button" value="测试合约">
<script>
var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
var abi=[
{
"constant": false,
"inputs": [
{
"name": "_msg",
"type": "string"
}
],
"name": "set",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "say",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
var addr="0x60823932b688af82c81a082f2292e95f879a0cb0"
document.querySelectorAll("input")[0].onclick=function(){
//使用web3 的api 去操作节点。jsonrpc
web3.eth.getAccounts(function(error,result){
console.log(result);
var res="查询账号信息:<br>";
for (var i=0;i<result.length;i++){
res+="账号"+(i+1)+":"+result[i]+"<br>";
}
document.getElementById("result").innerHTML=res;
});
}
document.querySelectorAll("input")[1].onclick=function(){
console.log("www");
web3.personal.newAccount("123456",function(error,result){
console.log(result);
});
}
document.querySelectorAll("input")[2].onclick=function(){
web3.personal.unlockAccount("0x89ed26fe35814f839b8b62e5de09521280247cfd","123456",function(error,result){
console.log(result);
console.log("解绑成功");
});
}
document.querySelectorAll("input")[3].onclick=function(){
web3.eth.getBalance("0xb258e5b1b30215b112881c13f22ab5a47a624b81",function(error,result){
console.log(result);
document.getElementById("result").innerHTML="余额:"+result.c[0];
console.log("获取余额成功");
});
}
document.querySelectorAll("input")[4].onclick=function(){
var adoption = web3.eth.contract(abi).at(addr)
console.log("获取account[0]"+web3.eth.accounts[0]);
adoption.set.sendTransaction("I'm here!!!", {from:web3.eth.accounts[0]})
var str= adoption.say();
console.log("获取成功"+str);
}
</script>
<div id="result"></div>
</body>
</html>
2.3. 点击创建账号¶
点击创建会执行
web3.personal.newAccount("123456",function(error,result){
console.log(result);
});
转账涉及发送交易,发送交易使用sendtransaction这个方法。
web3.eth.sendTransaction(transactionObject [, callback])
第二个参数是回调函数用来获得发送交易的Hash值。
第一个参数是一个交易对象,交易对象里面有几个字段:
- from : 就是从哪个账号发送金额
- to : 发动到到哪个账号
- value 是发送的金额
- gas: 设置gas limit
- gasPrice: 设置gas 价格
如果from没有的话,他就会用当前的默认账号, 如果是转账to和value是必选的两个字段。
// 这里使用Metamask 给的gas Limit 及 gas 价
var fromAccount = $('#fromAccount').val();
var toAccount = $('#toAccount').val();
var amount = $('#amount').val();
// 对输入的数字做一个检查
if (web3.isAddress(fromAccount) &&
web3.isAddress(toAccount) &&
amount != null && amount.length > 0) {
var message = {from: fromAccount, to:toAccount, value: web3.toWei(amount, 'ether')};
web3.eth.sendTransaction(message, (err, res) => {
var output = "";
if (!err) {
output += res;
} else {
output = "Error";
}
}
}
具体代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="js/web3.js"></script>
<input type="button" value="获取账号">
<input type="button" value="创建账号">
<input type="button" value="解锁账号">
<input type="button" value="获取余额">
<input type="button" value="测试合约">
<input type="button" value="转账">
<script>
var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
var abi=[
{
"constant": false,
"inputs": [
{
"name": "_msg",
"type": "string"
}
],
"name": "set",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "say",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
var addr="0x60823932b688af82c81a082f2292e95f879a0cb0"
document.querySelectorAll("input")[0].onclick=function(){
//使用web3 的api 去操作节点。jsonrpc
web3.eth.getAccounts(function(error,result){
console.log(result);
var res="查询账号信息:<br>";
for (var i=0;i<result.length;i++){
res+="账号"+(i+1)+":"+result[i]+"<br>";
}
document.getElementById("result").innerHTML=res;
});
}
document.querySelectorAll("input")[1].onclick=function(){
console.log("www");
web3.personal.newAccount("123456",function(error,result){
console.log(result);
});
}
document.querySelectorAll("input")[2].onclick=function(){
web3.personal.unlockAccount("0x89ed26fe35814f839b8b62e5de09521280247cfd","123456",function(error,result){
console.log(result);
console.log("解绑成功");
});
}
document.querySelectorAll("input")[3].onclick=function(){
web3.eth.getBalance("0xb258e5b1b30215b112881c13f22ab5a47a624b81",function(error,result){
console.log(result);
document.getElementById("result").innerHTML="余额:"+result.c[0];
console.log("获取余额成功");
});
}
document.querySelectorAll("input")[4].onclick=function(){
var adoption = web3.eth.contract(abi).at(addr)
console.log("获取account[0]"+web3.eth.accounts[0]);
web3.personal.unlockAccount(web3.eth.accounts[0],"123456",function(error,result){
console.log(result);
console.log("解绑成功");
adoption.set.sendTransaction("I'm here!!!", {from:web3.eth.accounts[0]})
var str= adoption.say();
console.log("获取成功"+str);
});
}
document.querySelectorAll("input")[5].onclick=function(){
console.log('oooo');
console.log("获取account[0]"+web3.eth.accounts[0]);
var fromAccount='0xb258e5b1b30215b112881c13f22ab5a47a624b81';
var toAccount='0xf417953e3b736a68cf7c60f89f459a28d25880da';
var amount=2000;
var message={from:fromAccount,to:toAccount,value:web3.toWei(amount,'ether')}
web3.personal.unlockAccount(web3.eth.accounts[0],"123456",function(error,result){
console.log(result);
console.log("解绑成功");
web3.eth.sendTransaction(message,function(error,result){
var output='';
if(!error){
output+=result;
}else{
output="Error";
}
console.log(output);
})
});
}
</script>
<div id="result"></div>
</body>
</html>
执行成功后,返回交易地址
返回交易地址