如何在 NodeJS 中以编程方式将 ICP 转换为 Cycles
2022-07-28 03:52
DFINITY
2022-07-28 03:52
订阅此专栏
收藏此文章


除非有一个库(例如 cmc-js)可以帮助将 ICP 实用程序令牌转换为 JavaScript 中的 Cycles,否则以下教程可能会帮助您实现这种转换。


简介


长话短说,要将 ICP 转换为 Cycles,您需要两件事:


  • 转换由 Cycles 铸币容器(CMC)通过函数返回的值的汇率 get_icp_xdr_conversion_rate


  • 一个可以进行转换的函数。


依赖项


要在 JavaScript 中轻松查询 CMC,您需要 agent-js(及其对等依赖项)。


此外,由于以下解决方案在 NodeJS 上下文中而不是在浏览器中运行,因此还需要 node-fetch 来为以前的库提供一种执行方式 XMLHttpRequest



Candid


必须使用 Cycles 铸币容器的接口描述来初始化通信通道。


CMC candid 文件可以在互联网计算机 repo 上下载,它的绑定文件(.idl.js.d.ts 等)可以使用 didc 命令行工具或 Canlista(该工具的 GUI 版本)生成,但如果您不想进行此类操作,您可以直接从我的博客平台项目 Papyrs 后端 repo 下载所有这些文件。


在下面的代码片段中,我使用了这些特定的绑定。


XDR 转换率


在主网上,CMC 的容器 ID 是 rkp4c-7iaaa-aaaaa-aaaca-caid,这个 ID 应该用来实例化 actor,以便查询 get_icp_xdr_conversion_rate 哪个返回 xdr_permyriad_per_icp,我们正在寻找的 XDR 中的实际转化率。


1 XDR 等于 1 万亿个 Cycles,我将结果转换为万亿比率,然后再返回。



将 ICP 转换为 Cycles


我们的目标是转换可读的数字,这就是为什么我们首先需要一个映射 number 到的小工具 BigInt(因为转换函数会处理这些类型)。



上述函数结果的一些示例(数字 -> bigint):



最后,为了有效地将 ICP 转换为 Cycles,我们可以实现与转换率的交叉乘法。



Demo


放在一个小 Demo 中,例如,可以将上面的函数链接起来,将转换的结果记录到控制台。



如果在命令行中运行,示例应该输出这样的结果:



结论


我希望这个小教程会很有用,如果您有任何改进的想法,请告诉我!


到无限和超越,David!


如需更多冒险,请在 Twitter(@daviddalbusco)上关注我。


在 internetcomputer.org 上开始构建,并在 forum.dfinity.org 加入开发者社区。



作者:David Dal Busco

翻译:Catherine



-              -


在区块链上建立社交媒体平台的竞赛

Web3 基础设施:现在和未来 | 2022 年 GWEI 峰会

互联网计算机仪表板:去中心化、治理、代币经济学等





你关心的 DFINITY 内容
技术进展 项目信息 全球活动


长按关注 DFINITY 微信公众号

随时答疑解惑


*添加小助手微信 comiocn 进交流社群


相关Wiki

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

在 App 打开
特朗普
空投
rwa
稳定币
babylon
以太坊
wayfinder
wct
morph
香港
hyperliquid
wal