# 管線任務
我們在此以更為常見的管線任務為例進行討論。 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 自動化服務 術語表 →