dApp 開發入門
本節旨在讓開發人員了解如何開始在 Zilliqa 上進行開發,
我們試圖使本指南簡潔,從而使其對于沒有區塊鏈開發經驗的開發人員來說足夠簡單。 由于許多應用程式開發人員都是 javascript 開發人員,所以我們將在代碼片段示例中使用 javascript, Zilliqa 研究院目前在 zilliqa-js 中積極維護官方 Javascript SDK,我們將在示例中使用它,
什么是 dApp?
去中心化應用程式(“dApps”)是與區塊鏈上的智能合約交互的應用程式。 由于 Zilliqa 區塊鏈是一個不由單個實體托管的分散網路,因此位于區塊鏈上的應用程式是 去中心化的,
應用程式可以具有面向用戶的組件(“客戶端”),可以是 Web 應用程式或移動應用程式, 這些應用程式可以與 Zilliqa 區塊鏈上的智能合約進行交互。
Zilliqa 區塊鏈的入口在于 RPC 接口。 SDK 不是你與區塊鏈交互的強制性要求,但它們確實讓你的開發更加輕松。
看到區塊鏈實體上的 0x1、0x2 了嗎? 這些是地址。
地址是區塊鏈上實體的標識符。 區塊鏈上的實體可以是用戶或合約,
地址
Zilliqa 目前支持兩種地址格式。
- ByStr20:20 字節的十六進制字符串(例如0x573EC96638C8bB1c386394602E1460634F02aDdA)
- bech32:一個 bech32 帶有一個可讀性更強的 zil 前綴(例如 zil12ulvje3ceza3cwrrj3szu9rqvd8s9tw69c978p)
這種設計背后的原因是為了防止與以太坊地址混淆, 更詳細的地址解釋請參考 本帖
const { toBech32Address, toChecksumAddress } = require(“@zilliqa-js/crypto”); // not checksummed address (will not be accepted by blockchain) const address = ‘573EC96638C8BB1C386394602E1460634F02ADDA’; // checksummed ByStr20 const checksummedAddresses = toChecksumAddress(address); // returns ‘0x573EC96638C8bB1c386394602E1460634F02aDdA’ const bech32_address = toBech32Address(address); // returns zil12ulvje3ceza3cwrrj3szu9rqvd8s9tw69c978p
我們強烈建議開發人員使用 bech32 格式的地址進行代幣傳輸。 這可以防止用戶將 Zilliqa 地址誤認為以太坊地址, 出于安全目的,所有處理代幣轉移的錢包和交易所目前都使用 bech32 標準,
RPC、SDK 和 scilla 合約均支持 ByStr20 地址校驗。
怎么知道一個地址是智能合約還是賬戶? 一種方法是發送 GetSmartContractInit POST 請求進行檢查。
在 Javascript 中,你可以執行以下操作:
const { Zilliqa } = require(“@zilliqa-js/zilliqa”); (async () => { const zilliqa = new Zilliqa(“https://dev-api.zilliqa.com”); const address = “573EC96638C8BB1C386394602E1460634F02ADDA”; const res = await zilliqa.blockchain.getSmartContractInit(address); const isContract = !!res.result; // returns false })();