概述
1. attach
假如已经启动eth,那么想共享同一个服务该怎么办?
geth attach "/Users/admin/bin/ethdata/geth.ipc"
2. eth开发
web3.js,它是一个eth区块的服务,可以实现eth及token的所有功能,包含交易/查询等,调用它的api即可实现,
api介绍地址:https://github.com/ethereum/wiki/wiki/JavaScript-API
项目地址:https://github.com/qiao365/web3.js
以node.js开发为例
01 .ETH TOKEN 代币交易监听:
// 合约ABI
var abi = [{"constant":false,"inputs":[{"name":"addr","type":"address"},。。。。。,"type":"uint256"}],"name":"Approval","type":"event"}];
// 合约地址
var address = "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a";
// 通过ABI和地址获取已部署的合约对象
var metacoin = web3.eth.contract(abi).at(address);
// 获取事件对象
var myEvent = metacoin.Transfer();
myEvent.watch(function(err, result) {
if (!err) {
console.log(result);
} else {
console.log(err);
}
});
02. ETH 所有区块监听
//这个是监听区块
var filter = web3.eth.filter("latest");
filter.watch((err, result)=>{
if(!err){
return genereateWatchHandle(addressMap, result)();
}else{
throw err;
};
});
//这个是根据blockHash区块获取交易信息(不确定,先着么写)
function genereateWatchHandle(addressMap, blockHash){
web3.eth.getBlock(blockHash, (err, lastBlock)=>{
if(!err){
resolve(lastBlock);
}else{
reject(err);
};
});
}
3.geth命令
查看节点信息
admin.nodeInfo
查看当前矿工账号
eth.coinbase 默认为第一个账户
修改矿工账号
miner.setEtherbase(eth.accounts[1])
转账
eth.sendTransaction({from:eth.accounts[0],to:"0x587e57a516730381958f86703b1f8e970ff445d9",value:web3.toWei(3,"ether")})
使用txpool.status可以看到交易状态
查看交易细节
eth.getTransaction("0x0075da712d26aea17d6647035107f509e13eaf3d113c1577db14d4cc4216caec")
查看区块数据
eth.blockNumber
eth.getTransaction("0x0c59f431068937cbe9e230483bc79f59bd7146edc8ff5ec37fea6710adcab825")
eth.getBlock(1) 通过区块号查看区块
充值
personal.unlockAccount(eth.accounts[0])
token.issue.sendTransaction(eth.accounts[0], 100, {from: eth.accounts[0]});
miner.start(1)
miner.stop()
发送 token
token.transfer(eth.accounts[1], 30, {from: eth.accounts[0]})
miner.start(1)
miner.stop()
连接到其他节点
可以通过 admin.addPeer() 方法连接到其他节点,两个节点要要指定相同的 chainID。
假设有两个节点:节点一和节点二,chainID 都是 1024,通过下面的步骤就可以从节点一连接到节点二。
首先要知道节点二的 enode 信息,在节点二的 JavaScript console 中执行下面的命令查看 enode 信息:
> admin.nodeInfo.enode
调用智能合约
交易会通过挖矿记录到区块链中:
contract.multiply.sendTransaction(2, 4, {from:eth.accounts[0]})
本地运行该方法查看返回结果,可以采用如下方式:
contract.multiply.call(2,4)
4.
外部接口与智能合约交互
以太坊对外提供的有很多接口JSON RPC接口,web3接口,这里我们用JSON RPC接口。
相关API: https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendrawtransaction
最后
以上就是着急楼房为你收集整理的geth的全部内容,希望文章能够帮你解决geth所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复