Zilliqa dApp开发者入门说明书
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 })();