基於Mixin Network的PHP比特幣開發教程: 建立比特幣錢包


咱們已經建立過一個回覆消息的機器人和一個能自動支付比特幣的機器人.php

經過本教程的學習,你能夠學到以下內容

  1. 如何建立一個比特幣錢包.
  2. 如何讀取比特幣錢包的餘額.
  3. 如何支付比特幣並即時確認.
  4. 如何將Mixin Network的比特幣提現到你的冷錢包或第三方交易所.

前期準備:你要有一個Mixin Network帳戶。若是沒有帳戶,一行代碼就能建立一個git

$user_info = $mixinSdk->Network()->createUser("Tom cat");

上面的語句會在本地建立一個RSA密鑰對,而後調用Mixin Network來建立賬號,最後輸出賬號信息.github

//Create User api include all account information
print_r($user_info);
print($user_info["pubKey"]);
$newConfig = array();
$newConfig["private_key"] = $user_info["priKey"];
$newConfig["pin_token"]   = $user_info["pin_token"];
$newConfig["session_id"]  = $user_info["session_id"];
$newConfig["client_id"]   = $user_info["user_id"];

賬號建立成功後結果以下:api

Array
(
    [type] => user
    [user_id] => de06f952-6ec7-3789-8467-9aa79869a6ef
    [identity_number] => 0
    [full_name] => Tom cat
    [avatar_url] =>
    [relationship] =>
    [mute_until] => 0001-01-01T00:00:00Z
    [created_at] => 2019-02-20T12:29:29.86008273Z
    [is_verified] =>
    [session_id] => bc9293e5-ed9a-48da-99f9-915f561a1c60
    [phone] =>
    [pin_token] => TIPyCtRTTYOg2sr+lu0z2D3xS8SOtQAy0ZDnacRrn6u2ytutZinzeEpRTD9N1+DS/T1zJ8VoX4ED19nhF5SApjqjUaRjKI5lga4rQGcePjCvM0D89FdpmKJzNMLjzV2DglKFMPbnJTu1btfILc0XWiSNEiiFr2mHuLI7bYuQzWI=
    [invitation_code] =>
    [code_id] =>
    [code_url] => https://mixin.one/codes/
    [has_pin] =>
    [receive_message_source] => EVERYBODY
    [accept_conversation_source] => EVERYBODY
    [priKey] => -----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALh0dSy2GcKek/Jp
4lTMZxJ30AWP+inZ4c+FG+3ch3fenmXysCyM56hgvVZwh4RrRpvVjRt/NNE3k2Wg
N9LNZqWXCmo4ae/hJjpwuj/EVR/1/HSebF9hcvMoTre8D0iLlk+rf1tgr/ZHmIoa
8ef45xMBDargfsF4b5k7kUavU9/xAgMBAAECgYB1ShBMOwsMVxvKdIvn0gXkl20e
bFvtis9szr5gtO8rSNK+DuD5oyuXRNSAh5OUn0ZJxzQv/OZP9x/x6jw0/kk7Aj6c
jjN3beC7UoayDYms4yNFoWNPqZEXkQ0b2tRsF3mdNj6LVm6Gq7FPDD1TYJ4GR4eO
cWHCkZWym26HbZ30AQJBAPNFeZ7nd9wQIzu0wN9isrZebnCko3yax64MDsUAsrmP
B1wdHkdX0tJpCldighYD10Cyi+nSz3ODmmbPbLu8AjECQQDCGyi0lpCoV+skLVR0
4weU99Msz1neqOw1khQCJLzUW8UdDhsVwfCdzCeuZrCz+gl/aZaJ6d+6rNTMp1hL
ionBAkBEs34hTiUfVL9egTFm5KyrrAdscFJrQhraIDWblRLkLGxbqy194GN9YIS3
IO6z4OnNL58rrYlAig30sud2LSZBAkEAjuNXT7kWvBYcbwE/jtwhlLPqrK3nRlWr
rLPgLsPEjb8Ql5busVGXQ1IqU+QcaCDEJRshSlzz6YOZEx6NjO5rAQJAejvW3DmT
RjUSDJD8hGr9eCpKQTBDXyUEvyLIMCuRmm9Cbz0HRl4aVXOVblVWoJ6YsGvbCkSl
LQCrPL2T58JTkg==
-----END PRIVATE KEY-----

    [pubKey] => -----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4dHUsthnCnpPyaeJUzGcSd9AF
j/op2eHPhRvt3Id33p5l8rAsjOeoYL1WcIeEa0ab1Y0bfzTRN5NloDfSzWallwpq
OGnv4SY6cLo/xFUf9fx0nmxfYXLzKE63vA9Ii5ZPq39bYK/2R5iKGvHn+OcTAQ2q
4H7BeG+ZO5FGr1Pf8QIDAQAB
-----END PUBLIC KEY-----
)

如今你須要當心保管好你的賬號信息,在讀取該帳戶的比特幣資產餘額或者進行其餘操做時,將須要用到這些信息.網絡

給新建的賬號建立一個比特幣錢包

新帳號並不默認內置比特幣錢包, 如今讀一下比特幣餘額就能夠建立一個比特幣錢包。session

$asset_infoNew = $mixinSdkNew->Wallet()->readAsset("c6d0c728-2624-429b-8e0d-d9d19b6592fa");
echo "BitCoin wallet address is :".$asset_infoNew["public_key"];

建立的賬號的比特幣資產詳細信息以下,其中public key就是比特幣的存幣地址:ide

Array
(
    [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] => 195p8R8Y15uzDGMrdVkELVUW2444psqiSq
    [account_name] =>
    [account_tag] =>
    [price_btc] => 1
    [price_usd] => 3928.11498197
    [change_btc] => 0
    [change_usd] => -0.006841408545228452
    [asset_key] => c6d0c728-2624-429b-8e0d-d9d19b6592fa
    [confirmations] => 12
    [capitalization] => 0
)

這個API可以提供若干與比特幣有關的信息:學習

  • 存幣地址:[public_key]
  • Logo: [icon_url]
  • 資產名字:[name]
  • 資產在Mixin Network的uuid: [asset_key]
  • 對美圓的價格(Coinmarketcap.com提供): [price_usd]
  • 存幣時確認的區塊數量:[confirmations]

比特幣私鑰呢?

比特幣的私鑰呢?這個私鑰被Mixin Network經過多重簽名保護,因此對用戶來講是不可見的,比特幣資產的提現和轉帳都須要用戶提供正確的的RSA簽名,PIN代碼與會話密鑰才能完成.區塊鏈

不僅是比特幣,還有以太坊,EOS等

這個賬號不僅支持比特幣,還支持以太坊,EOS等, 完整的區塊鏈支持列表. 這個帳戶同時也支持全部的 ERC20 代幣與 EOS 代幣.ui

建立其它的幣的錢包與建立比特幣錢包過程同樣,讀對應的資產餘額就能夠.

Mixin Network 當前支持的加密貨幣 (2019-02-19)

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的資產餘額返回結果以下:

Array
(
    [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] => 0aa2b00fad2c69059ca1b50de2b45569
    [price_btc] => 0.00097367
    [price_usd] => 3.87734515
    [change_btc] => 0.05950956117519646
    [change_usd] => 0.07238079041492786
    [asset_key] => eosio.token:EOS
    [confirmations] => 64
    [capitalization] => 0
)

存入比特幣與讀取比特幣餘額

如今,你能夠向比特幣的錢包存幣了。

固然,在比特幣網絡裏轉幣,手續費是至關貴的,費用的中位數在0.001BTC,按當前4000美圓的價格,在4美圓左右,有一個方便的辦法,若是你有Mixin Messenger賬號,裏面而且有比特幣的話,能夠直接提現比特幣到新建立的賬號的比特幣充值地址,它們在同一個Mixin Network網絡內,手續費爲0,並且1秒到帳。

下面的代碼,能夠讀取比特幣錢包餘額.

$btc = $mixinSdkNew->Wallet()->readAsset("c6d0c728-2624-429b-8e0d-d9d19b6592fa");
print_r($btc);

Mixin Network網內免手續費的,而且即時確認

任何幣在Mixin Network內部的交易,都是無手續費的,而且馬上到帳。
前期準備: 帳戶設置了PIN

對於新建立的賬號,咱們經過updatePin來設置新PIN碼, 代碼以下:

//Create a PIN.
$pinInfo = $mixinSdkNew->Pin()->updatePin('',PIN);
print_r($pinInfo);

Mixin Network賬號之間的比特幣支付

經過Mixin Messenger,咱們能夠先轉比特幣給機器人,而後讓機器人轉幣給新用戶。

$mixinSdk = new MixinSDK(require './config.php');
//$user_info["user_id"] generated by create user;
$trans_info = $mixinSdk->Wallet()->transfer(BTC_ASSET_ID,$user_info["user_id"],
                                         $mixinSdk->getConfig()['default']['pin'],AMOUNT);
print_r($trans_info);

讀取Bitcoin的餘額,來確認比特幣是否是轉成功了! 注意$mixinSdkNew是新用戶的。

$btc = $mixinSdkNew->Wallet()->readAsset(BTC_ASSET_ID);
print_r($btc);

如何將比特幣存入你的冷錢包或者第三方交易所

若是你但願將幣存入你的冷錢包或者第三方交易所, 先要獲得冷錢包或者你在第三方交易所的錢包地址,而後將錢包地址提交到Mixin Network.

  • 要點提示: 提現是須要支付收續費的,準備比如特幣包地址!

增長目的錢包地址到Mixin Network

調用createAddress API, 將會返回一個address_id,下一步的提現操做會用到這個id。

$btcInfo = $mixinSdkNew->Wallet()->createAddress("c6d0c728-2624-429b-8e0d-d9d19b6592fa",
                                                    "14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C",
                                                    $mixinSdkNew->getConfig()['default']['pin'],
                                                    "BTC withdral",false);

這裏的 14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C 就是一個比特幣錢包地址, 以下所示,提現費用是0.0025738 BTC, address_id 是"345855b5-56a5-4f3b-ba9e-d99601ef86c1".

Array
(
    [type] => address
    [address_id] => 345855b5-56a5-4f3b-ba9e-d99601ef86c1
    [asset_id] => c6d0c728-2624-429b-8e0d-d9d19b6592fa
    [public_key] => 14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C
    [label] => BTC withdral
    [account_name] =>
    [account_tag] =>
    [fee] => 0.0025738
    [reserve] => 0
    [dust] => 0.0001
    [updated_at] => 2019-02-20T01:47:56.44067294Z
)

建立提現地址成功後,你能夠用readAddress讀取最新的提現費。

$wdInfo = $mixinSdkNew->Wallet()->readAddress($btcInfo["address_id"]);

提交提現請求,Mixin Network會即時處理提現請求.

提交提現請求到Mixin Network, $btcInfo["address_id"]就是createAddress建立的。

$wdInfo = $mixinSdkNew->Wallet()->withdrawal($btcInfo["address_id"],
                            "0.01",
                            $mixinSdkBot->getConfig()['default']['pin'],
                            "BTC withdral");

能夠經過blockchain explore來查看進度.

完整的代碼在這兒

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息