本篇內(nèi)容主要講解“怎么創(chuàng)建Stellar賬戶”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么創(chuàng)建Stellar賬戶”吧!
創(chuàng)新互聯(lián)是一家專業(yè)提供平潭企業(yè)網(wǎng)站建設,專注與做網(wǎng)站、網(wǎng)站制作、HTML5、小程序制作等業(yè)務。10年已為平潭眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。
Stellar區(qū)塊鏈是一個廣泛使用的區(qū)塊鏈網(wǎng)絡。在這個教程中,我們將學習使用JavaScript代碼創(chuàng)建Stellar賬戶、進行Stellar賬戶充值、并向Stellar區(qū)塊鏈提交賬戶間的轉(zhuǎn)賬交易。
要快速掌握區(qū)塊鏈和數(shù)字貨幣應用開發(fā),推薦匯智網(wǎng)的區(qū)塊鏈開發(fā)系列在線教程。 內(nèi)容涵蓋比特幣、以太坊、EOS、超級賬本、Tendermint等多種主流區(qū)塊鏈 平臺, 同時支持Java、C#、Python、PHP、JavaScript、Dart等多種開發(fā) 語言。
Horizon:應用程序通過Horizon開發(fā)接口與Stellar網(wǎng)絡交互。Horizon是一個RESTful HTTP API服務器,利用Horizon API開發(fā)者可以提交交易,檢查賬戶余額并訂閱事件。你可以在web瀏覽器中使用Horizon API,或者使用cURL命令行訪問Horizon API,不過最簡單的方法就是使用官方提供的Stellar SDK,目前官方已經(jīng)支持JavaScript、Java和Go,同時社區(qū)也開發(fā)了Python、C#和Ruby的SDK。
Stellar Core:是Stellar網(wǎng)絡的主干,每個Horizon服務器都需要連接到Stellar Core。Stellar Core負責驗證交易并達成共識。所有個體運行的Stellar Core形成了去中心化的Stellar網(wǎng)絡,網(wǎng)絡上的每個交易都需要支付一小筆費用:100 stroop(0.00001 XLM),交易手續(xù)費的目的是阻止網(wǎng)絡上的垃圾信息。
Stellar共識協(xié)議 - SCP:SCP在安全和活性之間選擇了安全 - 當出現(xiàn)分區(qū)事件或有行為異常的節(jié)點時,SCP會停止網(wǎng)絡的運行,直到可以達成網(wǎng)絡的共識。關(guān)于SCP的詳細信息請參考Stellar白皮書。
使用Docker運行Stellar Core:只要運行一個Stellar Core實例,就可以加入Stellar網(wǎng)絡。我們可以使用Stellar/quickstart這個docker鏡像來快速創(chuàng)建一個Stellar Core實例。
測試鏈對于開發(fā)者而言,幸運的是Stellar也提供了一個測試鏈供開發(fā)使用。你可以在這里查看其詳細信息。
在繼續(xù)學習之前,希望你對JavaScript、Express和Async/Await有初步的了解。
我們將在測試鏈上創(chuàng)建兩個賬戶,然后充值這兩個賬戶,并在這兩個賬戶之間進行一些隨意地轉(zhuǎn)賬。最后,我們希望使用交易瀏覽器提取交易信息??傊?,本教程的目的是讓你快速了解Stellar區(qū)塊鏈開發(fā)的基礎知識。
你可以在這里找到本教程的完整代碼。在本教程的結(jié)尾部分也有完整的代碼。
Stellar JavaScript SDK在所有官方SDK中是最穩(wěn)定的一個。我們可以使用如下命令安裝JS SDK:
npm i -S stellar-sdk
使用下面的JS代碼來初始化一個連接測試鏈的Server實例:
const server = new Stellar.Server('https://horizon-testnet.stellar.org') Stellar.Network.useTestNetwork()
現(xiàn)在我們可以創(chuàng)建兩個隨機賬戶了。Stellar SDK提供了一個函數(shù)用于在不提供密碼學種子的情況下創(chuàng)建隨機密鑰對:
let pairA = Stellar.Keypair.random() let pairB = Stellar.Keypair.random()
得到的Keypair對象提供了兩個方法分別用于獲取密鑰對的公鑰和密文種子:
publicKey():獲取公鑰
secret():獲取密文種子
接下來我們定義初始化賬戶的路由。在下面的函數(shù)中,我們將向Stellar測試鏈上的friendbot發(fā)送請求以充值之前創(chuàng)建的密鑰對賬戶。friendbot會自動給我們的賬戶分別充值10.000個Lumen。下面的代碼使用request-promise包來發(fā)送請求給Horizon測試鏈API,這個包可以很好地配合async/await。我們在 查詢字符串中傳入要充值的公鑰地址。
await rp.get({ uri: 'https://horizon-testnet.stellar.org/friendbot', qs: { addr: pairA.publicKey() }, json: true })
賬戶現(xiàn)在已經(jīng)創(chuàng)建好了,但是我們在應用中還沒有賬戶對象。使用如下的代碼獲?。?/p>
accountB = await server.loadAccount(pairB.publicKey())
現(xiàn)在可以檢查我們的賬戶中是不是已經(jīng)有了一些Stellar幣了:
accountA.balances.forEach((balance) => { console.log('Type:', balance.asset_type, ', Balance:', balance.balance) })
上面的代碼略加修改就可以獲取賬戶B的余額,你可以試一下!
一個交易(transaction)可以包含多個操作(operation)。出于簡化考慮,我們將只使用轉(zhuǎn)賬操作。在下面的示例中將pairB的公鑰作為轉(zhuǎn)賬目標地址,轉(zhuǎn)賬數(shù)量為30.000000001。Stellar SDK要求mount參數(shù)應當聲明7位小數(shù):
const transaction = new Stellar.TransactionBuilder(accountA) .addOperation(Stellar.Operation.payment({ destination: pairB.publicKey(), asset: Stellar.Asset.native(), amount: '30.0000001' })) .build()
酷!交易現(xiàn)在就等著發(fā)送賬戶進行簽名了,我們可以使用transaction.sign(pairA)
來進行這一步。好了,簽完名就可以發(fā)送給Horizon了:
const transactionResult = await server.submitTransaction(transaction)
下面的代碼將每頁僅返回一個交易。你可以使用historyPage
的next()
方法繼續(xù)提取后續(xù)的交易:
let historyPage = await server.transactions() .forAccount(accountA.accountId()) .call()
我們要打印XDR編碼的交易中的操作詳情。首先需要解碼為base64并迭代所有操作來顯示發(fā)送的金額:
let txDetails = Stellar.xdr.TransactionEnvelope .fromXDR(historyPage.records[1].envelope_xdr, 'base64') txDetails._attributes.tx._attributes.operations .map(operation => console.log( `Transferred amount: ${operation._attributes.body._value._attributes.amount.low} XLM` ))
最后,讓我們獲取下一個historyPage
:
historyPage = await historyPage.next()
你可以瀏覽Stellar網(wǎng)絡中的交易,查看這個示例。
交易的元數(shù)據(jù)保存為XDR格式,你可以在這里進行反序列化。
你可以查看指定公鑰的所有交易,這是一個示例。
到此,相信大家對“怎么創(chuàng)建Stellar賬戶”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!