Gateway
是對接Monero區塊鏈的頂層類,適合管理多用戶的地址及交易,主要包括以下方法:
newAddress():創建新地址
balance():獲取指定地址的XMR余額
transfer():轉賬
Gateway的實例化需要指定服務節點和錢包節點的URL,例如下面的代碼使用本機的Monero節點創建一個Gateway實例:
$opts=['daemon_url'=>'http://localhost:28081',//服務節點URL'wallet_url'=>'http://localhost:28083'//錢包節點URL];$gateway=newGateway($opts);//返回Gateway實例
使用Gateway的newAddress()
方法為用戶創建一個新的門羅幣地址,例如:
$addr=$gateway->newAddress();//創建一個新的XMR地址echo'newaddress=>'.$addr.PHP_EOL;
使用Gateway的balance()
方法獲取指定Monero地址的余額,例如:
$balance=$gateway->balance('9wviCeWe2D8XS82k2o....RrAotYPwq9Gm8');echo'total=>'.$balance->total.PHP_EOL;//總余額,單位:piconeroecho'unlocked=>'.$balance->unlocked.PHP_EOL;//解凍余額,單位:piconero
balance()
方法返回一個對象,total
和unlocked
字段分別表示所查詢地址的總余額和解鎖余額,單位均為:piconero或pico。
使用Gateway的transfer()
方法在指定地址間轉賬。例如,下面的代碼從賬戶from向賬戶to轉1000000 piconero :
$from='9wviCeWe2D8XS82k2ovp5...7X1D7Geoo2RrAotYPwq9Gm8';$to='A2GmyHHJ9jtUhPiwoAbR2tX...uzKf6RGGgZTFTpVC4QxAiAX';$amount=1000000//單位:piconero$txid=$gateway->transfer($from,$to,$amount);echo'txhash=>'.$txid.PHP_EOL;
transfer()
方法返回轉賬交易的哈希。
piconero是門羅幣最小的單位,1 minero = 10^12 piconero。
門羅幣 Php開發包下載地址:http://sc.hubwiz.com/codebag/monero-php-lib/
RpcClient
是對Monero官方RPC協議的封裝,用于在PHP應用中訪問官方的服務節點(Daemon)和錢包節點(Wallet),點擊這里查看Monero的RPC API 中文文檔。
創建一個RpcClient實例很簡單,只需要傳入節點的RPC API訪問URL即可。例如,下面的代碼實例化一個RpcClient對象,這個對象的所有RPC調用請求都會發往參數URL指定的Monero服務節點:
$daemon=newRpcClient('http://localhost:28081');//返回客戶端實例
對于節點中的JSON RPC API,可以直接以方法名進行調用。例如,服務節點提供 get_block_count方法來獲取鏈上區塊的數量,使用RpcClient對象的調用方式如下:
$ret=$daemon->get_block_count();//調用同名JSONRPCAPIecho'blockcount=>'.$ret->count.PHP_EOL;
如果JSON RPC API方法需要參數,例如服務節點提供的用來獲取區塊數據的get_block方法,就需要傳入區塊高度或區塊哈希,那么將需要的參數組織成關聯數組傳入即可。例如查看高度100#區塊數據:
$ret=$daemon->get_block(['height'=>100]);echo'numberoftxs=>'.$ret->block_header->num_txes.PHP_EOL;
Monero的服務節點也提供了非JSON RPC規范的其他訪問接口,例如按交易ID查詢交易數據的方法/get_transactions
。這些非JSON RPC采用自己特定的訪問端結點,因此我們可以使用RpcClient的post()
方法,來指定訪問端結點和請求參數。
例如,下面的代碼獲取指定哈希a6fa....b8fs
的交易數據:
$inputs=['txs_hashes'=>['a6fa97b7c1d7a4f68a8041a2e7ca7a250d01391f14a0d5947b0936dca1f2b8f3']];$ret=$daemon->post('/get_transactions',$inputs);//非JSONRPCAPi調用echo'numberofmissedtx=>'.count($ret->missed_tx).PHP_EOL;echo'numberoffoundtx=>'.count($ret->txs).PHP_EOL;
門羅幣有不同的計量單位,從最小的原子單位piconero到最大的meganero:
FaceValue
類封裝了門羅幣/XMR的面值計算邏輯,可以認為FaceValue表示了包含計量單位的門羅幣數量。因此在實例化一個FaceValue對象時,需要同時指定數量和單位,例如,創建一個包含20.34個門羅幣的FaceValue對象來表征銷售收入:
$sales=FaceValue::parse('20.34mo');echo'sales=>'.$sales.PHP_EOL;//20.34mo
FaceValue封裝了門羅幣的面值轉換邏輯,因此可以得到上面的銷售收入轉換為其他單位的數量:
echo'salesinpico=>'.$sales->pico.PHP_EOL;//20.340000000000echo'salesinmega=>'.$sales->mega.PHP_EOL;//0.00002034
也可以直接更新指定的單位,例如將銷售量更新為203.4 mo
:
$sales->mo=203.4;echo'salesinmega=>'.$sales->mega.PHP_EOL;//0.0002034
使用Mnemonic
類來創建Monero專有類型的助記詞,或者將助記詞轉換為密碼學種子。Monero的助記詞包含25個單詞,詞表也不同于比特幣。下面是一個Monero助記詞的示例:
vipersoppositealpinedebutrebelessentialenigmaironymoonincurfugitivetuftstouchymoisturehijackchlorinevividtextbookchromebiasnimblyhamburgerwaysidetarnishedtarnished
Mnemonic提供了靜態方法new()
來生成新的助記詞。例如,下面的代碼生成一組隨機的新助記詞:
$words=Mnemonic::new();echo'mnemonic=>'.$words.PHP_EOL;
Mnemonic提供了靜態方法seed()
來將指定的助記詞轉換為密碼學種子,以便用于密鑰對的恢復等操作。例如,下面的代碼將助記詞轉換為密碼學種子:
$seed=Mnemonic::seed('vipersoppositealpinedebutrebelessentialenigmaironymoonincurfugitivetuftstouchymoisturehijackchlorinevividtextbookchromebiasnimblyhamburgerwaysidetarnishedtarnished');echo'seed=>'.$seed.PHP_EOL;//78bf0d6c8e877c8ffbf9701e8063a690a91295d6f3a576e7b61c8c7829d8a7e0
門羅幣 Php開發包下載地址:http://sc.hubwiz.com/codebag/monero-php-lib/
憑證類Crendential
用來管理Monero區塊鏈上的個人身份憑證 —— 密鑰對:
可以生成一個隨機憑證,例如:
$credential=Credential::new();//生成隨機密鑰對
也可以使用之前保存的助記詞重建身份憑證,例如:
$seed=Mnemonic::seed('vipersoppositealpinedebutrebelessentialenigmaironymoonincurfugitivetuftstouchymoisturehijackchlorinevividtextbookchromebiasnimblyhamburgerwaysidetarnishedtarnished');$credential=Credential::infer($seed);//從種子推導密鑰對
門羅幣是一種隱私貨幣,進入區塊鏈的交易是經過加密混淆的,因此和其他區塊鏈相比,Monero需要兩套密鑰:消費密鑰(spend key)和查看密鑰(view key),消費密鑰類似于其他區塊鏈中的身份標識密鑰對,而查看密鑰則用戶查看加密混淆的區塊鏈交易,以便錢包跟蹤交易輸出。
例如,下面的代碼查看憑證對象的消費密鑰對和查看密鑰對:
echo'secretspendkey=>'.$credential->secretSpendKey().PHP_EOL;echo'publicspendkey=>'.$credential->publicSendKey().PHP_EOL;echo'secretviewkey=>'.$credential->secretViewKey().PHP_EOL;echo'publicviewkey=>'.$credential->publicViewKey().PHP_EOL;
Address:Monero區塊鏈標準地址實現
SubAddress:Monero區塊鏈中的子地址實現,子地址由標準地址和兩級索引序號推導得出
IntegratedAddress:Monero區塊鏈中的整合地址實現,整合地址由標準地址和支付ID推導得出
使用Address類的靜態方法decode()
解碼地址字符串,返回的Address對象中 包含了解碼后的信息。
例如,下面的代碼解碼指定的地址,并顯示該地址所屬網絡、消費公鑰和查看公鑰:
$addr=Address::decode('9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm8');echo'network=>'.$addr->network().PHP_EOL;echo'spendkey=>'.$addr->spendKey().PHP_EOL;echo'viewkey=>'.$addr->viewKey().PHP_EOL;
調用Credential對象的address()
方法,可以獲得該憑證對象的門羅幣地址。例如:
$addressMain=$credential->address('main');//返回主網地址echo'address@mainnet=>'.$addressMain.PHP_EOL;$addressMain=$credential->address('main');//返回測試網地址echo'address@testnet=>'.$addressTest.PHP_EOL;
address()
方法返回的是一個Address對象。
使用Address對象的generateIntegratedAddress()
方法,可以從標準地址 推導出集成地址IntegratedAddress對象:
$addr=$credential->address('test');$ia=$addr->generateIntegratedAddress();echo'ia=>'.$ia.PHP_EOL;echo'iapaymentid=>'.$ia->paymentId().PHP_EOL;
集成地址適合商戶的訂單收費,通過為每個訂單生成不同的支付ID,可以 避免生成大量的Monero憑證和標準地址。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注本站行業資訊頻道,感謝您對本站的支持。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
民生信用卡額度的調整方法為:1、電腦登錄民生銀行客服官網,然后在頁面點擊“我的信用卡-我要調額”即可調整自己的信用卡額度;2、打開并登錄民生的全民生活APP,然后在頁面依次點擊“精選-調額度”進行信用卡額度的調整。不同途徑申請調整額度的審核結果是一樣的,如果申請失敗了可以過段時間再重新申請,期間保持信用卡按時還款不要逾期。民生信用卡額度為什么升不了?...
(資料圖片僅供參考)最近小編看到大家都在討論少年大欽差里十公主是誰演的相關的事情,對此呢小編也是非常的感應興趣,那么這件事究竟是怎么發生的呢?具體又是怎么回事呢?下面就是小編搜索到的關于少年大欽差里十公主是誰演的事件的相關信息,我們一起來看一下吧!1989年9月7日出生于上海的佟童,畢業于美國紐約大學傳媒學專業,是中國內地女演員、導演、編劇。從三歲開始拍攝電影《陌生的愛》、《奧菲斯小姐》受到影視界...
最近小編看到很多人在搜索K寶的相關內容,小編呢對此也是非常感興趣,特意整理了相關的內容,下面就和小編一起來看下吧!k寶密碼忘了怎么辦?去銀行重置k寶的密碼:k寶密碼有6次輸入的機會,如果輸錯則會被鎖定,K寶密碼忘記需要卡主本人帶開卡證件及銀行卡到就近農業銀行任意柜臺辦理補辦證書業務即可。k寶密碼忘了能不能在網上修改?K寶密碼忘記了需要卡主本人帶好身份證和銀行卡去附近的銀行辦理密碼重置手續,手續費是...