一 开发程序
(本文以价格预言机为例)
(1 clone代码
git clone https://github.com/baidang201/oracle-price-ezc.git
二 创建镜像,并测试本地运行效果
(tips 需要使用Mac m1,或其他arm64设备进行创建镜像,如果没有,请参考跨平台编译 https://docs.docker.com/build/buildx/multiplatform-images/)
docker build --tag yourdockerhubaccount/oracle_price_ezc .
(2 本地验证预言机功能可用
(tips eth.keystore是eth账户导出的备份文件, 这个账户必须要有DPR才能发起交易)
docker run -v /eth.keystore:/eth.keystore baidang201/oracle_price_ezc
三 发布镜像
(发布镜像这里要注意push之后的仓库权限,要是public权限,即所有人都可以拉的状态)
docker push yourdockerhubaccount/oracle_price_ezc
四 使用DEP合约,发布自己的任务
(注意要先申请测试网的代币,并把自己的以太坊账户加入开发者白名单)
https://metamask.zendesk.com/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC 《How to add a custom network RPC》
Network Name:Deeper testnet
New RPC URL: https://mainnet-dev.deeper.network/rpc
Chain ID:518
Currency Symbol:DPR
https://blockscount-dev.deeper.network/address/0x9397AA12576cEc2A37C60f76d2FB31b31b5E5c7F/write-contract#address-tabs
(1 链接metamask钱包
connect wallet
(2 使用nNodeUnSpecifiedAddressTask 接口发布任务,点击write
Description:
url: docker images的下载地址
options:docker image的运行参数
maxRunNum:最大任务
maintainBlocks:任务的最大执行区块数(当前每个区块数为6秒)
填入参数分别为下面4个,然后点击write
Example:
url:yourdockerhubaccount/oracle_price_ezc:latest
options:oracle_price --delay=10
maxRunNum:10
maintainBlocks:100
五 查看发布结果
(1 点击确认之后,等待交易完成
Untitled
(2 查看区块浏览器任务发布情况
https://blockscount-dev.deeper.network/tx/0x40376219077279701e10aca1ea642d3ad7d543f16ccc17d8dfa63f83237b1ebc
里面url和options,maxRunNum,maintainBlocks根据调用参数会变动
Tips:
如果使用自己的设备调试,可以使用nNodespecifiedAddressTask, 指定receivers为Deep Connect Mini设备DEP地址,让自己的设备运行任务
(3 查看最新的预言机喂价
https://blockscount-dev.deeper.network/address/0x862AF0CF4397C06B4B76288c97aBefdF3eD5F121/transactions#address-tabs
参考资料
https://github.com/difttt/oracle-price/tree/main rust实现的价格预言机
https://github.com/difttt/docker-task/tree/send_mail_with_cmd golang实现的邮件任务
https://github.com/difttt/task-benchmark.git shell和lua实现性能测试
https://github.com/deeper-chain/web3d/blob/master/src/lib.rs DEP客户端实现原理
https://github.com/deeper-chain/web3d/wiki/Web3D-container-standards web3d容器限制与标准