[LiquidApps] DAPP 网络使用攻略之二:如何使用
cover.jpg使用 DAPP 网络所提供的服务创建了具有可扩展性的 dApp,如何在麒麟网络上部署?这篇文章会介绍如何做。
在 DAPP 网络使用攻略之一 中, 我们一起了解了如何在智能合约中启用vRAM,借助这一去中心化的、可扩展的存储解决方案创造 dApp。
但是,想要将这些用到了 vRAM 或其他 LiquidApps 服务的 dApp 部署到公共网络上供用户使用,我们还有其他的事情要做:使用 DAPP 服务提供商(DSP) 所提供的服务包为你的 dApp 提供资源,方法是选择好对应的服务包,然后抵押相应数量的 DAPP 代币给 DSP。
如果使用 vRAM 服务,我们要用到的服务包是 ipfsservice1
。在主网上,我们见到这项服务发展迅速,截至9月7日,70个可用的 DSP 服务包中有 49 个是 ipfsservice1
类型,提供了 vRAM 服务,帮助 dApp 扩展存储能力。
(截图来自dsphq.io, 你可以通过社区所提供的其他若干 DSP 浏览器查看:https://bihu.com/article/1606984716)
在本文之中,我们不会在主网上部署。但是,我们在测试网络上的部署过程将与主网部署大致相同。
为了在麒麟测试网上部署支持 vRAM 的 dApp,我们需要建立一个帐户,并为它提供一些测试网 EOS,以便它能够提供部署合约所需的资源。
请注意,帐户仍然需要一些RAM才能部署,因为合约会保存在RAM中,而不能保存在vRAM中。vRAM通常情况下可以降低应用程序对RAM的需求,但它不会消除这些需求。
首先:在麒麟测试网上设置好账号
image.png使用 https://www.cryptokylin.io ,创建账号很轻松,你也可以查看该网站了解更多内容。在本教程中,我们创建了账号 1111dsptutor
,你也可以创建自己的账号,方法是访问链接:
http://faucet.cryptokylin.io/create_account?your_account
(请记得将链接中问号后面的内容替换为你想要创建的账号名)
然后,保存好你所收到的信息,页面中会提供给你两对不同的密钥,分别对应新创建账号的owner权限和active权限。
请注意,如果遇到
404
的页面报错,或者其他错误,请稍后再试,或者前往 CryptoKylin Telegram 电报群 寻求帮助。
创建账号之后,你可以从麒麟测试网络的水龙头获得测试代币,非常容易:
http://faucet.cryptokylin.io/get_token?1111dsptutor
同样的,请将问号后面的账号名替换为你自己在麒麟测试网上的账号名,系统会发送 100 EOS测试代币至您的账号之中。
(可选操作) 将新创建的麒麟测试网账号添加到 Scatter 钱包
image.png点击 Scatter 桌面版窗口的右上方的齿轮图标。然后,从设置菜单中选择“网络(Network)”选项。该操作为危险操作,所以需要你输入密码确认。
image.png- 在 “Your Networks(你的网络)” 之中,输入如下内容:
Name: Kylin testnet
Host: 178.62.36.41
Port:8888
Protocol:http
Chain ID: 5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191
点击 “Add” 就可以成功添加测试网络。
-
将你保存的麒麟测试网账号的私钥导入 Scatter 之中。
-
由于 Scatter 中的默认网络设置不包含麒麟测试网,可能你需要手动操作 “关联账号”,输入你的账号名称和权限,例如
11111dsptutor@active
和1111dsptutor@owner
。
设置完成后,你可以通过区块链浏览器查看你的麒麟网测试账号情况,可以访问 https://kylin.eosx.io
image.png(可选操作) 若尚未设置 cleos,可以现在处理
为了使用 cleos 购买 RAM、注册服务包和部署合约,你需要先将私钥导入到 cleos 钱包之中,使用的命令为: cleos wallet import
。 如果你还没有设置好,可以参照 EOSIO 开发者文档之中的前三步之中的指南进行设置: https://developers.eos.io/eosio-home/docs/wallets
查看麒麟测试网上的 DSP 所提供的可用 vRAM
通过DSP门户网站,也可以方便地查看麒麟测试网上的 DSP 的信息。例如,DSP HQ 在右上方可以进行切换至麒麟网络: https://dsphq.io/?network=kylin, Bloks.io 也提供了麒麟测试网的 DSP 页面: kylin.bloks.io/dsp。
image.png在这一篇教程中,我们只需要看到vRAM包。其他服务,如LiquidOracles (oracleservic)、LiquidScheduler (cronservices)等也提供了对应的软件包。
不同的 vRAM 服务包提供了不同的代币抵押数量要求、最小赎回周期(通常为1小时)、服务包配额和服务包周期。
在此处,我们选择了 “heliosselene” 这一 DSP 所提供的ipfsservice1
服务包 “package1”。 根据该服务包 min_stake_quantity(最小抵押数量)的要求,我们抵押 10 个 DAPP 代币。现在,准备就绪,我们可以看看这一服务包如何为我们提供服务了。
从麒麟测试网上获取 DAPP 测试代币, 请访问网页 kylin-dapp-faucet.liquidapps.io:
image.png输入账号名,你可以获得 1000 个麒麟测试网上的 DAPP 代币! 不过,这里我可不敢打包票,您可能会遇到人机验证的情形。您可以通过https://kylin.eosx.io或另一个区块链浏览器中查看你的账号情况。
获得了 DAPP 代币,是时候开始使用服务包了
你可以根据需要,将下文中的相关参数替换为您所选择的麒麟网端点(endpoint), DSP 和 DSP 服务包以及您的账号名。
在本系列文章的第一部分中,我们解压了 cardgame 的合约。请确保您当前文件夹所在位置为解压 cardgame 的文件夹。
使用 cleos
1. 首先, 设置参数,方便后续操作
请注意,如果遇到
404
的页面报错,或者其他错误,请稍后再试,或者前往 CryptoKylin Telegram 电报群 寻求帮助。
将代码片段中的 1111dsptutor
替换为你的用户名:
$ KYLIN_TEST_ACCOUNT=1111dsptutor
$ export KYLIN_TEST_PUBLIC_KEY=EOS52EvB8SfrxFGmq3cSeMHiAXpjyaBQkgX28A5pxtr8ETXkJT2Ss
$ export $EOS_ENDPOINT=https://kylin-dsp-2.liquidapps.io
注意: 将来,您可以在终端的浏览器中简化前面的步骤,如下所示:
$ export EOS_ENDPOINT=https://kylin-dsp-2.liquidapps.io
// 创建 Kylin 账号, 请将 `1111dsptutor` 替换为你自己的账号名,并保存好私钥
$ export KYLIN_TEST_ACCOUNT=curl http://faucet.cryptokylin.io/create_account?1111dsptutor
// 获得active 公钥
$ export KYLIN_TEST_PUBLIC_KEY=curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT
// 获得测试代币
$ curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT
$ curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT
// 获得更多的 CPU 和 NET 资源
$ cleos -u $EOS_ENDPOINT system delegatebw $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "50.0000 EOS" "100.0000 EOS" -p $KYLIN_TEST_ACCOUNT@active
您可以再次使用最后两个命令来获得更多Kylin EOS,如果需要,还可以增加当前测试帐户的CPU和Net资源。访问https://kylin-dapp-faucet.liquidapps.io获得更多的 DAPP 测试代币,就像我们之前做的那样。
2. 选择服务包
$ cleos -u $EOS_ENDPOINT push action dappservices stake "{\"from\":\"$KYLIN_TEST_ACCOUNT\",\"provider\":\"heliosselene\",\"service\":\"ipfsservice1\",\"quantity\":\"10.0000 DAPP\"}" -p $KYLIN_TEST_ACCOUNT@active
备注:如果不使用变量 $KYLIN_TEST_ACCOUNT
, 也可以使用如下方式发送数据:'['1111dsptutor','heliosselene','ipfsservice1','package1']'
但是,使用 $KYLIN_TEST_ACCOUNT
执行此操作将把这些文字字符作为数据发送,因此我们需要对数据使用双引号,即,我们需要对数据中的键值对都使用转义符 \"
的方式,如示例代码中所示。
3. 抵押 DAPP 代币
$ cleos -u $EOS_ENDPOINT push action dappservices stake "{\"from\":\"$KYLIN_TEST_ACCOUNT\",\"provider\":\"heliosselene\",\"service\":\"ipfsservice1\",\"quantity\":\"10.0000 DAPP\"}" -p $KYLIN_TEST_ACCOUNT@active
抵押之后,意味着我们可以获得由 heloisselene
这一 DSP 的 IPFS 服务(vRAM 服务包)所提供的资源了。
部署 dApp 合约
Let’s give it a try so we can see how much RAM we’ll need to deploy.
We’ll proceed using cleos for the rest of the article, but if you chose to use Scatter and a web tool such as bloks.io, all of these actions can be performed there, as well.
让我们试试看,看看部署合约需要消耗多少 RAM。
在本文的其余部分,我们将继续使用 cleos 方式,但是如果您选择使用 Scatter 和 bloks 之类的 web 工具同样奏效。
**1) **In order to set our code as a smart contract code, we need to run set contract:
1 为了将本地的代码设置为智能合约代码,需要运行命令:
$ cleos -u $EOS_ENDPOINT set contract $KYLIN_TEST_ACCOUNT ./contracts/eos/cardgame -p $KYLIN_TEST_ACCOUNT@active
image.png
上图中我们注意到,并未部署成功,命令行界面的报错信息中,告知了我们需要多少 RAM。
毕竟,这是麒麟网络嘛, RAM 免费的,我们多买一点好了:
$ cleos -u $EOS_ENDPOINT system buyram $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "50.0000 EOS" -p $KYLIN_TEST_ACCOUNT@active
2) 重新部署合约
这一次购买了足够的 RAM 之后,我们可以重新运行命令,部署我们使用了 vRAM 服务的智能合约:
$ cleos -u $EOS_ENDPOINT set contract $KYLIN_TEST_ACCOUNT ./contracts/eos/cardgame -p $KYLIN_TEST_ACCOUNT@active
部署结果如图所示:
image.png3) 最后,配置代码的 eosio.code 权限,完成合约部署
$ cleos -u $EOS_ENDPOINT set account permission $KYLIN_TEST_ACCOUNT active "{\"threshold\":1,\"keys\":[{\"weight\":1,\"key\":\"$KYLIN_TEST_PUBLIC_KEY\"}],\"accounts\":[{\"permission\":{\"actor\":\"$KYLIN_TEST_ACCOUNT\",\"permission\":\"eosio.code\"},\"weight\":1}]}" owner -p $KYLIN_TEST_ACCOUNT@active
测试刚部署的智能合约
虽然资源问题很少出现,不过,保险起见,你也可以先多获取一点资源:
cleos -u $EOS_ENDPOINT system delegatebw $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "250.0 EOS" "200.0 EOS" -p $KYLIN_TEST_ACCOUNT@active
我们不会在这里编写全面的测试,但是我们至少可以从一个简单的cleos push操作开始试下登录功能。
在如下代码中,请用您自己的用户名替换掉 1111dsptutor
。
$ cleos -u $EOS_ENDPOINT push action 1111dsptutor login '['1111dsptutor']' -p 1111dsptutor@active
Bingo! 可以了! 如果你想尝试一些其他的纸牌游戏动作,这里有更多的例子, 同样,记得替换下账号名:
'['1111dsptutor']' -p 1111dsptutor@active
cleos -u $EOS_ENDPOINT push action $KYLIN_TEST_ACCOUNT playcard '['1111dsptutor','2']' -p 1111dsptutor@active
在下一篇文章中,我们会研究强大的 LiquidOracles 预言机服务,并将其添加到智能合约中。
更多信息,请访问我们正在陆续更新中的技术文档https://docs.liquidapps.io/,如果您有任何问题,请在我们的电报群或我们的开发者电报群中提问,也可以加入中文微信群及中文 LiquidApps 开发者交流群沟通。