主页 > imtoken钱包地址 > 比特币钱包源代码 Ruby 比特币开发教程:构建比特币钱包
比特币钱包源代码 Ruby 比特币开发教程:构建比特币钱包
我们已经构建了一个响应消息的机器人和一个自动支付 bitcoin.git 的机器人
完成本教程后,您将能够学习以下内容: 如何设置比特币钱包。 如何读取比特币钱包的余额。 如何通过即时确认以比特币付款。 第三方交易所。
前期准备:你必须有一个 Mixin Network 账号。 以下代码创建一个帐户并将其写入 csv 文件。 知乎
if File.file?(WALLET_NAME) p "mybitcoin_wallet.csv has already existed !" next end yaml_hash = YAML.load_file('./config.yml') MixinBot.client_id = yaml_hash["MIXIN_CLIENT_ID"] MixinBot.session_id = yaml_hash["MIXIN_SESSION_ID"] MixinBot.client_secret = yaml_hash["MIXIN_CLIENT_SECRET"] MixinBot.pin_token = yaml_hash["MIXIN_PIN_TOKEN"] MixinBot.private_key = yaml_hash["MIXIN_PRIVATE_KEY"] access_token = MixinBot.api.access_token("GET","/","") rsa_key = OpenSSL::PKey::RSA.new(1024) private_key = rsa_key.to_pem() p private_key public_key = rsa_key.public_key.to_pem secret_client = public_key.sub("-----BEGIN PUBLIC KEY-----\n","").sub("\n-----END PUBLIC KEY-----\n","") reqInfo = MixinBot.api.create_user("ruby bot",secret_client) p reqInfo["data"]["pin_token"] p reqInfo["data"]["user_id"] p reqInfo["data"]["session_id"] CSV.open(WALLET_NAME, "wb") do |csv| csv << [private_key, reqInfo["data"]["pin_token"], reqInfo["data"]["session_id"], reqInfo["data"]["user_id"]] end
上面的语句会在本地创建一个RSA密钥对,然后调用Mixin Network创建一个账户,最后将账户信息保存到一个csv文件.api
现在您需要注意保存您的账户信息,在读取账户的比特币资产余额或进行其他操作时会需要这些信息。ruby
为新创建的账户创建一个比特币钱包
新账户默认没有内置比特币钱包如何创建比特币冷钱包,现在您可以通过读取您的比特币余额来创建比特币钱包。
if cmd == "2" table = CSV.read(WALLET_NAME) MixinBot.client_id = table[0][3] MixinBot.session_id = table[0][2] MixinBot.pin_token = table[0][1] MixinBot.private_key = table[0][0] botAssetsInfo = MixinBot.api.read_asset(BTC_ASSET_ID) p botAssetsInfo p "The BTC wallet address is " + botAssetsInfo["data"]["public_key"] p "The BTC wallet balance is " + botAssetsInfo["data"]["balance"] end
建立账户的比特币资产明细如下,其中公钥为比特币充值地址:network
Make your choose(eg: q for Exit!): 2 {"data"=>{"type"=>"asset", "asset_id"=>"c6d0c728-2624-429b-8e0d-d9d19b6592fa", "chain_id"=>"c6d0c728-2624-429b-8e0d-d9d19b6592fa", "symbol"=>"BTC", "name"=>"Bitcoin", "icon_url"=>"https://images.mixin.one/HvYGJsV5TGeZ-X9Ek3FEQohQZ3fE9LBEBGcOcn4c4BNHovP4fW4YB97Dg5LcXoQ1hUjMEgjbl1DPlKg1TW7kK6XP=s128", "balance"=>"0", "public_key"=>"1MQLQG1FshdVaQrDE36FLGabCitE3vPUA", "account_name"=>"", "account_tag"=>"", "price_btc"=>"1", "price_usd"=>"7948.30287759", "change_btc"=>"0", "change_usd"=>"0.006197123302394101", "asset_key"=>"c6d0c728-2624-429b-8e0d-d9d19b6592fa", "confirmations"=>6, "capitalization"=>0}} "The BTC wallet address is 1MQLQG1FshdVaQrDE36FLGabCitE3vPUA" "The BTC wallet balance is 0" -------------------------------------------------------------------------
这个API可以提供几个比特币相关的信息:session
比特币私钥呢?
比特币的私钥呢? 该私钥由 Mixin Network 通过多重签名保护,因此对用户是不可见的。 比特币资产的提现和转移需要用户提供正确的RSA签名、PIN码和会话密钥才能完成。 主场
不仅是Bitcoin比特币钱包源码,还有Ethereum、EOS等。
本账号不仅支持比特币比特币钱包源码,还支持以太坊、EOS等,完整的区块链支持列表。 该账户还支持所有 ERC20 代币和 EOS 代币。学习
为其他硬币构建钱包的过程与构建比特币钱包相同。 可以阅读对应的资产余额.blockchain
Mixin Network 目前支持的加密货币 (2019-02-19) cryptouuid in Mixin Network
EOS
6cfe566e-4aad-470b-8c9a-2fd35b49c68d
中央银行
965e5c6e-434c-3fa9-b780-c50f43cd955c
比特币
c6d0c728-2624-429b-8e0d-d9d19b6592fa
ETC
2204c1ee-0ea2-4add-bb9a-b3719cfff93a
波纹
23dfb5a5-5d7b-48b6-905f-3970e3176e27
新兴市场
27921032-f73e-434e-955f-43d55672ee31
以太坊
43d61dcd-e413-450d-80b8-101d5e903357
短跑
6472e7e3-75fd-48b6-b1dc-28d294ee1476
州长
6770a1e5-6086-44d5-b60f-545f9d9e8ffd
长途贸易公司
76c802a2-7c88-447f-a93e-c29c9e5dd9c8
SC
990c4c29-57e9-48f6-9819-7d986ea44985
禅
a2c5d22b-62a2-4c13-b3f0-013290dbac60
零碳
c996abc9-d94e-4494-b1cf-2a3fd3ac5714
生物安全信息交易所所
fd11b6e3-0b87-41f1-a41f-f0e9b49e5bf0
EOS的充币地址与其他币种有些不同。 它由两部分组成:account_name 和account label。 如果您将EOS存入Mixin Network,您需要填写两条数据:账户名是eoswithmixin,并在备注中输入您的account_tag,例如0aa2b00fad2c69059ca1b50de2b45569。
EOS资产余额返回结果如下:
Make your choose(eg: q for Exit!): 3 {"data"=>{"type"=>"asset", "asset_id"=>"6cfe566e-4aad-470b-8c9a-2fd35b49c68d", "chain_id"=>"6cfe566e-4aad-470b-8c9a-2fd35b49c68d", "symbol"=>"EOS", "name"=>"EOS", "icon_url"=>"https://images.mixin.one/a5dtG-IAg2IO0Zm4HxqJoQjfz-5nf1HWZ0teCyOnReMd3pmB8oEdSAXWvFHt2AJkJj5YgfyceTACjGmXnI-VyRo=s128", "balance"=>"0", "public_key"=>"", "account_name"=>"eoswithmixin", "account_tag"=>"60ec682616408d9486b5975a1361e269", "price_btc"=>"0.00079077", "price_usd"=>"6.28647972", "change_btc"=>"0.004235601507246285", "change_usd"=>"0.00974554134353926", "asset_key"=>"eosio.token:EOS", "confirmations"=>64, "capitalization"=>0}} "The EOS wallet address is eoswithmixin 60ec682616408d9486b5975a1361e269" "The EOS wallet balance is 0" -------------------------------------------------------------------------
存入比特币并读取比特币余额
今天,您可以将硬币存入比特币钱包。
当然,在比特币网络中,交易费用是非常昂贵的。 费用中位数为 0.001BTC。 以目前 4,000 美元的价格计算,这大约是 4 美元。 有一个方便的方法。 如果你有一个存有比特币的Mixin Messenger账户,你可以直接将比特币提现到新建账户的比特币充值地址。 他们在同一个Mixin Network网络,手续费0,1秒到账。
下面的代码能够读取比特币钱包余额。
table = CSV.read(WALLET_NAME) MixinBot.client_id = table[0][3] MixinBot.session_id = table[0][2] MixinBot.pin_token = table[0][1] MixinBot.private_key = table[0][0] botAssetsInfo = MixinBot.api.read_asset(BTC_ASSET_ID) p botAssetsInfo p "The BTC wallet address is " + botAssetsInfo["data"]["public_key"] p "The BTC wallet balance is " + botAssetsInfo["data"]["balance"]
Mixin Network 免费网络,即时确认
Mixin 网络内任何货币的交易都是免费的,并且会立即记入贷方。
前期准备:账户设置密码
对于新创建的账户,我们通过updatePin设置一个新的PIN码,代码如下:
table = CSV.read(WALLET_NAME) puts table[0][1] MixinBot.client_id = table[0][3] MixinBot.session_id = table[0][2] MixinBot.pin_token = table[0][1] MixinBot.private_key = table[0][0] pinInfo = MixinBot.api.update_pin('',DEFAULT_PIN) p pinInfo
Mixin Network 账户之间的比特币支付
通过Mixin Messenger,我们可以先把比特币转给机器人,然后让机器人把币转给新用户。
if cmd == "teb" yaml_hash = YAML.load_file('./config.yml') MixinBot.client_id = yaml_hash["MIXIN_CLIENT_ID"] MixinBot.session_id = yaml_hash["MIXIN_SESSION_ID"] MixinBot.client_secret = yaml_hash["MIXIN_CLIENT_SECRET"] MixinBot.pin_token = yaml_hash["MIXIN_PIN_TOKEN"] MixinBot.private_key = yaml_hash["MIXIN_PRIVATE_KEY"] table = CSV.read(WALLET_NAME) wallet_userid = table[0][3] botAssetsInfo = MixinBot.api.read_asset(EOS_ASSET_ID) if botAssetsInfo["data"]["balance"].to_f > 0 transInfo = MixinBot.api.create_transfer(MixinBot.api.encrypt_pin(yaml_hash["MIXIN_PIN_CODE"]), { asset_id: EOS_ASSET_ID, opponent_id: wallet_userid, amount: botAssetsInfo["data"]["balance"], trace_id: SecureRandom.uuid, memo: "from ruby" }) p transInfo end end
读取比特币余额,确认比特币转账是否成功!
botAssetsInfo = MixinBot.api.read_assets()
如何将比特币存入您的冷钱包或第三方交易所
如果你想充币到你的冷钱包或第三方交易所,你必须先在第三方交易所获取冷钱包或你的钱包地址,然后将钱包地址提交给Mixin Network。
将目标钱包地址添加到 Mixin Network
调用createAddress接口会返回一个address_id,在下次提现操作中会用到。
if cmd == "wb" table = CSV.read(WALLET_NAME) MixinBot.client_id = table[0][3] MixinBot.session_id = table[0][2] MixinBot.pin_token = table[0][1] MixinBot.private_key = table[0][0] addressInfo = MixinBot.api.create_withdraw_address(BTC_ASSET_ID, DEFAULT_PIN, BTC_WALLET_ADDR, "","", "from ruby") p addressInfo p "The address id is " + addressInfo["data"]["address_id"] + " it is needed by read fee!" end
这里14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C是一个比特币钱包地址,如下图,取款手续费为0.0025738 BTC如何创建比特币冷钱包,address_id为“345855b5-56a5-4f3b-ba9e-d99601ef86c1”。
Make your choose:wb wb {"type":"address","address_id":"58860d12-cbdc-40ae-8a4a-b0fc72f418b3", "asset_id":"c6d0c728-2624-429b-8e0d-d9d19b6592fa","public_key":"14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C", "label":"hi","account_name":"","account_tag":"","fee":"0.00118846","reserve":"0","dust":"0.0001", "updated_at":"2019-04-16T06:12:15.686517454Z"} ------------------------BTC---Withdrawal---Information--------------------------- The BTC Witchdrawal address is 14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C The BTC withdraw fee is 0.00118846
提现地址建立成功后,您可以使用readAddress读取最新的提现手续费。
addressInfo = MixinBot.api.get_withdraw_address(addressInfo["data"]["address_id"]) p addressInfo
提交提现请求,Mixin Network将立即处理提现请求。
向Mixin Network提交提现请求,withdrawAddress.address_id由createAddress创建。
if cmd == "wb" table = CSV.read(WALLET_NAME) MixinBot.client_id = table[0][3] MixinBot.session_id = table[0][2] MixinBot.pin_token = table[0][1] MixinBot.private_key = table[0][0] addressInfo = MixinBot.api.create_withdraw_address(BTC_ASSET_ID, DEFAULT_PIN, BTC_WALLET_ADDR, "","", "from ruby") p addressInfo p "The address id is " + addressInfo["data"]["address_id"] + " it is needed by read fee!" addressInfo2 = MixinBot.api.del_withdraw_address(addressInfo["data"]["address_id"], DEFAULT_PIN) p addressInfo2 withdrawInfo = MixinBot.api.withdrawals(addressInfo["data"]["address_id"], DEFAULT_PIN, "0.1", SecureRandom.uuid,"from ruby") p withdrawInfo end
可以通过区块链探索查看进度。
完整代码在这里
币圈新闻,版权所有丨如未注明,均为原创丨本站受BY-NC-SA协议授权
转载请注明原文链接:比特币钱包源码Ruby比特币开发教程:搭建比特币钱包