COSMOS ATOM钱包接入指南

2,941 阅读2分钟

【简介】:本文描述使用离线签名技术接入ATOM钱包,包含Node节点安装、配置。转入币扫块、生成钱包地址、离线签名转出币(使用NodeJS单独签名)、转出币。适用于钱包服务提供商,交易所开发人员,COSMOS个人爱好者使用。

【关键词】:COSMOS、ATOM、离线签名、NodeJs、Go、Linux、离线钱包

一、Node同步节点安装和配置

官方社区目前没有发布release版本,需要手工编译Go语言源码,才可以得到bin文件。

【安装Go,配置go环境】

  1. 下载Go wget "dl.google.com/go/go1.12.9…"
  2. tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz
  3. 配置go /etc/profile export PATH=$PATH:/usr/local/go/bin source /etc/profile
  4. 配置工作环境目录 mkdir -p HOME/go/bin mkdir -pHOME/go/src mkdir -p $HOME/go/pkg
  5. echo "export GOPATH=$HOME/go" >> ~/.bash_profile
  6. echo "export PATH=$PATH:$GOPATH/bin" >> ~/.bash_profile
  7. source ~/.bash_profile

【下载cosmos-sdk && 运行】

  1. wget "github.com/cosmos/cosm…"(当前日期20190919只能使用这个版本,其他版本都不可用)
  2. cd cosmos-sdk && make install
  3. cd $HOME
  4. gaiad init 397208752@qq.com
  5. curl raw.githubusercontent.com/cosmos/laun… > $HOME/.gaiad/config/genesis.json
  6. .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)

二、同步数据

  1. nohup gaiad start >> /root/atom_output.log 2>&1 & //启动任务,开始同步数据
  2. 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 输出不同目录

三、扫块转入

  1. curl 'http://atom-node:26657/tx_search?query="tx.height=1000"' //拿到的数据,按照base64解开即可。判断是否是钱包用户地址,如果有我们的钱包用户地址,根据hash字段,取出详细的转账信息。
  2. curl "localhost:1317/txs/D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED" //使用rest接口,得到详细的转账信息。
  3. 接上一步骤2得到的from/to/amount/memo/hash等基本信息,给用户入账。

四、转出

  1. 使用NodeJS库进行离线签名, 安装:"irisnet-crypto": "git+https://github.com/irisnet/irisnet-crypto.git"
  2. curl "localhost:1317/auth/accounts/cosmos1jp03wufg9egh6nq8qrxq5smevmpgxjjxcaas7g 获取转账需要的sequence 和 account_number
  3. 生成转账的数据
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 进行广播。 这样整个转入、转出就完成了,是不是很简单。

五、参考资料一网打尽

  1. www.mintscan.io/
  2. tendermint.com/rpc/#/intro…
  3. github.com/cosmos/gaia…
  4. riot.im/app/#/room/…
  5. cosmos.network/docs/tutori…

业务联系:397208752@qq.com,如果对你有帮助,欢迎提供打赏,谢谢。 地址:cosmos1usgj7hetwz0tzt90rfk9vkmv7jjdlm6emf4nxp memo:5597r16294