【简介】:本文描述使用离线签名技术接入ATOM钱包,包含Node节点安装、配置。转入币扫块、生成钱包地址、离线签名转出币(使用NodeJS单独签名)、转出币。适用于钱包服务提供商,交易所开发人员,COSMOS个人爱好者使用。
【关键词】:COSMOS、ATOM、离线签名、NodeJs、Go、Linux、离线钱包
一、Node同步节点安装和配置
官方社区目前没有发布release版本,需要手工编译Go语言源码,才可以得到bin文件。
【安装Go,配置go环境】
- 下载Go wget "dl.google.com/go/go1.12.9…"
- tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz
- 配置go /etc/profile export PATH=$PATH:/usr/local/go/bin source /etc/profile
- 配置工作环境目录 mkdir -p
HOME/go/src mkdir -p $HOME/go/pkg
- echo "export GOPATH=$HOME/go" >> ~/.bash_profile
- echo "export PATH=$PATH:$GOPATH/bin" >> ~/.bash_profile
- source ~/.bash_profile
【下载cosmos-sdk && 运行】
- wget "github.com/cosmos/cosm…"(当前日期20190919只能使用这个版本,其他版本都不可用)
- cd cosmos-sdk && make install
- cd $HOME
- gaiad init 397208752@qq.com
- curl raw.githubusercontent.com/cosmos/laun… > $HOME/.gaiad/config/genesis.json
- .gaiad/config/config.toml,增加下面的种子(3e16af0cead27979e1fc3dac57d03df3c7a77acc@3.87.179.235:26656,ba3bacc714817218562f743178228f23678b2873@public-seed-node.cosmoshub.certus.one:26656,2626942148fd39830cb7a3acccb235fab0332d86@173.212.199.36:26656,3028c6ee9be21f0d34be3e97a59b093e15ec0658@91.205.173.168:26656,89e4b72625c0a13d6f62e3cd9d40bfc444cbfa77@34.65.6.52:26656,6be0856f6365559fdc2e9e97a07d609f754632b0@cosmos-cosmoshub-2-seed.nodes.polychainlabs.com:26656)
二、同步数据
- nohup gaiad start >> /root/atom_output.log 2>&1 & //启动任务,开始同步数据
- nohup gaiacli rest-server --chain-id=cosmoshub-2 --laddr=tcp://0.0.0.0:1317 --home /usr >> /root/atom_gaia_rest_output.log 2>&1 & //启用reset服务,后续会用到,要保证和gaiad 输出不同目录
三、扫块转入
- curl 'http://atom-node:26657/tx_search?query="tx.height=1000"' //拿到的数据,按照base64解开即可。判断是否是钱包用户地址,如果有我们的钱包用户地址,根据hash字段,取出详细的转账信息。
- curl "localhost:1317/txs/D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED" //使用rest接口,得到详细的转账信息。
- 接上一步骤2得到的from/to/amount/memo/hash等基本信息,给用户入账。
四、转出
- 使用NodeJS库进行离线签名, 安装:"irisnet-crypto": "git+https://github.com/irisnet/irisnet-crypto.git"
- curl "localhost:1317/auth/accounts/cosmos1jp03wufg9egh6nq8qrxq5smevmpgxjjxcaas7g 获取转账需要的sequence 和 account_number
- 生成转账的数据
let fees = {denom:”uatom”, amount: 1000000*0.01};
let tx = {
chain_id: “cosmoshub-2”,
from: from,
account_number: accountNumber,
sequence: sequence,
fees: fees,
gas: 2000,
memo: memo ,
type: Irisnet.config.cosmos.tx.transfer.type,
return_type: 'sync',
msg: {
to: txInfo.to,
coins: [
{
denom: “uatom”,
amount: amount
}
]
}
};
送到离线签名服务进行签名:
let chainName = Irisnet.config.chain.cosmos; let builder = Irisnet.getBuilder(chainName, "cosmos"); let stdTx = builder.buildAndSignTx(tx, privateKey);
生成的stdTx,就是需要广播的tx,在线调用API接口:curl "localhost:1317/txs/D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED 进行广播。 这样整个转入、转出就完成了,是不是很简单。
五、参考资料一网打尽
- www.mintscan.io/
- tendermint.com/rpc/#/intro…
- github.com/cosmos/gaia…
- riot.im/app/#/room/…
- cosmos.network/docs/tutori…
业务联系:397208752@qq.com,如果对你有帮助,欢迎提供打赏,谢谢。 地址:cosmos1usgj7hetwz0tzt90rfk9vkmv7jjdlm6emf4nxp memo:5597r16294