# 管线任务
我们在此以更为常见的管线任务为例进行讨论。 TOML 文件中的任务可使用 “type” 参数进行分类。
和 基本上一起使用,主要用于调用 API 和提取 JSON 结果。
# method=["GET", "POST"]
# url="HTTP_REST_API"
ds_http [type="http" method=GET url="https://mock-exchange.org?symbol=TRX_USDT"]
# path=comma-separated-json-path. arrays can be accessed using the index number. e.g. "array,2"
ds_parse [type="jsonparse" path="json,path,syntax"]
用于执行任务中的 http-GET
和 jsonparse
操作
# url="HTTP_REST_API"
# path=dot-separated-json-path *NOTE: dot separated syntax, which is different from jsonparse's comma separated syntax
ds_converttrx [type="converttrx" url="https://mock-exchange.org?symbol=TRX_USDT" path="json.path.syntax"]
从上一个管线任务(Pipeline.Task
)获取输入值,然后进行一次 USDT 到 USD 的转换。
# No other parameters required. Verified through a USDT/USD Aggregator smart contract
ds_convertusd [type="convertusd"]
从上一个管线任务(Pipeline.Task
)中获取输入值,然后进行一次 USDT 到 TRX 的转换。
# No other parameters required. Verified through a USDT/TRX SunSwap pool TRC20 token
ds_convertusdt [type="convertusdt"]
用于手动输入不在我们上述预定义列表中的兑换币对(“USDT/USD”和"USDT/TRX“)
# poolAddr="SWAP_CONTRACT_T_ADDRESS"
# trx20Addr="TOKEN_CONTRACT_T_ADDRESS"
ds_justswap [type="justswap" poolAddr="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" trc20Addr="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"]
是专供 VRF
使用的方法。 我们假设任务在初始化时会提供变量 $jobRun.[logFn, logData, logTopics]
。 详情请参考 [winklink-libocr][libocr-link]
# abi=The function abi. defaults to: RandomWordsRequested(type [indexed] name, ...)
decode [type="tvmabidecodelog"]
是专供 VRF
使用的方法。 我们假设任务在初始化时会提供变量 $jobSpec.[publicKey]
以及 $jobRun.[logBlockHash, logBlockNumber, logTopics]
。
# No other parameters required. It uses job parameters and event values to generate the result.[output, requestID, method, proof, requestCommitment] object
vrf [type=vrfbuilder]
是专供 VRF
使用的方法, 可触发调用合约中的 fulfillment 方法。
# contract="VRF_CONTRACT_ADDRESS"
# extractRevertReason=Boolean. default: false. ON error, extract the reason to determine if it is a RPC or contract error.
tvmcall [type=tvmcall contract="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" extractRevertReason=true]
# 示例
以下例子展示了从 LIVE 到 USD 这一币对转化所需完成的任务。
Broadcaster规划一个 pipeline 任务
LIVE/TRX SunSwap 兑换
TRX/USDT 转换
将结果相乘(根据您的需求可设置 6 位小数位)
将 USDT 价格对的结果转化为 USD 价格对
ds_justswap [type="justswap" poolAddr="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" trc20Addr="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"]
ds_convertusdt [type="convertusdt"]
ds_multiply [type="multiply" times=1000000]
ds_convertusd [type="convertusd"]
ds_justswap -> ds_convertusdt -> ds_multiply -> ds_convertusd
以下例子是针对 VRF 的场景
广播者从链上接收一个 VRF RandomWordsRequested(...) 事件,并规划一个管线任务
解码 ABI、数据和事件日志
加密生成证明和随机数
智能合约的回调通过 RequestFulfilled
和 RandomWordsFulfilled
实现
decode [type="tvmabidecodelog"]
vrf [type=vrfbuilder]
tvmcall [type=tvmcall contract="TXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" extractRevertReason=true]
decode -> vrf -> tvmcall
← WINkLink 自动化服务 术语表 →