咱們已經建立過一個回覆消息的機器人和一個能自動支付比特幣的機器人.git
前期準備:你要有一個Mixin Network帳戶。下面的代碼建立一個賬號,並寫到csv文件裏。github
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
新帳號並不默認內置比特幣錢包, 如今讀一下比特幣餘額就能夠建立一個比特幣錢包。bash
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
複製代碼
建立的賬號的比特幣資產詳細信息以下,其中public key就是比特幣的存幣地址:網絡
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代碼與會話密鑰才能完成.dom
這個賬號不僅支持比特幣,還支持以太坊,EOS等, 完整的區塊鏈支持列表. 這個帳戶同時也支持全部的 ERC20 代幣與 EOS 代幣.學習
建立其它的幣的錢包與建立比特幣錢包過程同樣,讀對應的資產餘額就能夠.區塊鏈
crypto | uuid in Mixin Network |
---|---|
EOS | 6cfe566e-4aad-470b-8c9a-2fd35b49c68d |
CNB | 965e5c6e-434c-3fa9-b780-c50f43cd955c |
BTC | c6d0c728-2624-429b-8e0d-d9d19b6592fa |
ETC | 2204c1ee-0ea2-4add-bb9a-b3719cfff93a |
XRP | 23dfb5a5-5d7b-48b6-905f-3970e3176e27 |
XEM | 27921032-f73e-434e-955f-43d55672ee31 |
ETH | 43d61dcd-e413-450d-80b8-101d5e903357 |
DASH | 6472e7e3-75fd-48b6-b1dc-28d294ee1476 |
DOGE | 6770a1e5-6086-44d5-b60f-545f9d9e8ffd |
LTC | 76c802a2-7c88-447f-a93e-c29c9e5dd9c8 |
SC | 990c4c29-57e9-48f6-9819-7d986ea44985 |
ZEN | a2c5d22b-62a2-4c13-b3f0-013290dbac60 |
ZEC | c996abc9-d94e-4494-b1cf-2a3fd3ac5714 |
BCH | fd11b6e3-0b87-41f1-a41f-f0e9b49e5bf0 |
EOS的存幣地址與其它的幣有些不一樣,它由兩部分組成: account_name and account tag, 若是你向Mixin Network存入EOS,你須要填兩項數據: account name 是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,按當前4000美圓的價格,在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內部的交易,都是無手續費的,而且馬上到帳。 前期準備: 帳戶設置了PIN
對於新建立的賬號,咱們經過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 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
複製代碼
讀取Bitcoin的餘額,來確認比特幣是否是轉成功了!
botAssetsInfo = MixinBot.api.read_assets()
複製代碼
若是你但願將幣存入你的冷錢包或者第三方交易所, 先要獲得冷錢包或者你在第三方交易所的錢包地址,而後將錢包地址提交到Mixin Network.
調用createAddress API, 將會返回一個address_id,下一步的提現操做會用到這個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
複製代碼
addressInfo = MixinBot.api.get_withdraw_address(addressInfo["data"]["address_id"])
p addressInfo
複製代碼
提交提現請求到 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
複製代碼