diff --git a/README.md b/README.md index 1d5e6cc..b4ea04b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # How to use -1. Review `chainlink.env` and adapt accordingly. The committed environment file uses Kovan testnet. Also, the example uses a wss infura project url. +1. Review `chainlink.env` and adapt accordingly. The committed environment file uses Rinkeby testnet. Also, the example uses a wss infura project url. 2. Build and run with docker-compose diff --git a/battery_job.txt b/battery_job.txt new file mode 100644 index 0000000..0fadab3 --- /dev/null +++ b/battery_job.txt @@ -0,0 +1,26 @@ +type = "directrequest" +schemaVersion = 1 +name = "odometeronly" +contractAddress = "0x7caBbcCAa965F3466387C001c3154BD69cA26AF5" +maxTaskDuration = "0s" +minContractPaymentLinkJuels = 0 +observationSource = """ + decode_log [type="ethabidecodelog" + abi="OracleRequest(bytes32 indexed specId, address requester, bytes32 requestId, uint256 payment, address callbackAddr, bytes4 callbackFunctionId, uint256 cancelExpiration, uint256 dataVersion, bytes data)" + data="$(jobRun.logData)" + topics="$(jobRun.logTopics)"] + + decode_cbor [type=cborparse data="$(decode_log.data)"] + fetch [type=bridge name=ligo requestData="{\\"id\\":$(jobSpec.externalJobID), \\"data\\" : {\\"vehicleId\\": $(decode_cbor.vehicleId) , \\"encToken\\": $(decode_cbor.encToken) }}"] + parse [type=jsonparse path="data,percentRemaining" data="$(fetch)"] + multiply [type="multiply" input="$(parse)" times=1000] + encode_data [type=ethabiencode abi="(uint256 value)" data="{ \\"value\\": $(multiply) }"] + encode_tx [type=ethabiencode + abi="fulfillOracleRequest(bytes32 requestId, uint256 payment, address callbackAddress, bytes4 callbackFunctionId, uint256 expiration, bytes32 data)" + data="{\\"requestId\\": $(decode_log.requestId), \\"payment\\": $(decode_log.payment), \\"callbackAddress\\": $(decode_log.callbackAddr), \\"callbackFunctionId\\": $(decode_log.callbackFunctionId), \\"expiration\\": $(decode_log.cancelExpiration), \\"data\\": $(encode_data)}" + ] + submit_tx [type=ethtx to="0x7caBbcCAa965F3466387C001c3154BD69cA26AF5" data="$(encode_tx)"] + + decode_log -> decode_cbor -> fetch -> parse -> multiply -> encode_data -> encode_tx -> submit_tx +""" + diff --git a/chainlink.env b/chainlink.env index 0727e4d..06f9636 100644 --- a/chainlink.env +++ b/chainlink.env @@ -1,6 +1,6 @@ ROOT=/chainlink LOG_LEVEL=debug -ETH_CHAIN_ID=42 +ETH_CHAIN_ID=4 MIN_OUTGOING_CONFIRMATIONS=2 LINK_CONTRACT_ADDRESS=0xa36085F69e2889c224210F603D836748e7dC0088 CHAINLINK_TLS_PORT=0 diff --git a/fuel_job.txt b/fuel_job.txt new file mode 100644 index 0000000..d50b3b7 --- /dev/null +++ b/fuel_job.txt @@ -0,0 +1,26 @@ +type = "directrequest" +schemaVersion = 1 +name = "odometeronly" +contractAddress = "0x7caBbcCAa965F3466387C001c3154BD69cA26AF5" +maxTaskDuration = "0s" +minContractPaymentLinkJuels = 0 +observationSource = """ + decode_log [type="ethabidecodelog" + abi="OracleRequest(bytes32 indexed specId, address requester, bytes32 requestId, uint256 payment, address callbackAddr, bytes4 callbackFunctionId, uint256 cancelExpiration, uint256 dataVersion, bytes data)" + data="$(jobRun.logData)" + topics="$(jobRun.logTopics)"] + + decode_cbor [type=cborparse data="$(decode_log.data)"] + fetch [type=bridge name=ligo requestData="{\\"id\\":$(jobSpec.externalJobID), \\"data\\" : {\\"vehicleId\\": $(decode_cbor.vehicleId) , \\"encToken\\": $(decode_cbor.encToken) }}"] + parse [type=jsonparse path="data,amountRemaining" data="$(fetch)"] + multiply [type="multiply" input="$(parse)" times=1000] + encode_data [type=ethabiencode abi="(uint256 value)" data="{ \\"value\\": $(multiply) }"] + encode_tx [type=ethabiencode + abi="fulfillOracleRequest(bytes32 requestId, uint256 payment, address callbackAddress, bytes4 callbackFunctionId, uint256 expiration, bytes32 data)" + data="{\\"requestId\\": $(decode_log.requestId), \\"payment\\": $(decode_log.payment), \\"callbackAddress\\": $(decode_log.callbackAddr), \\"callbackFunctionId\\": $(decode_log.callbackFunctionId), \\"expiration\\": $(decode_log.cancelExpiration), \\"data\\": $(encode_data)}" + ] + submit_tx [type=ethtx to="0x7caBbcCAa965F3466387C001c3154BD69cA26AF5" data="$(encode_tx)"] + + decode_log -> decode_cbor -> fetch -> parse -> multiply -> encode_data -> encode_tx -> submit_tx +""" + diff --git a/odometer_location_job.txt b/odometer_location_job.txt new file mode 100644 index 0000000..cda7ea4 --- /dev/null +++ b/odometer_location_job.txt @@ -0,0 +1,36 @@ +type = "directrequest" +schemaVersion = 1 +name = "job" +contractAddress = "0xB01106bFd6A5636f800D20112dFC348B95e5c00b" +maxTaskDuration = "0s" +observationSource = """ + decode_log [type="ethabidecodelog" + abi="OracleRequest(bytes32 indexed specId, address requester, bytes32 requestId, uint256 payment, address callbackAddr, bytes4 callbackFunctionId, uint256 cancelExpiration, uint256 dataVersion, bytes data)" + data="$(jobRun.logData)" + topics="$(jobRun.logTopics)"] + decode_cbor [type="cborparse" data="$(decode_log.data)"] + + fetch [type="bridge" name="ligo" requestData="{\\"id\\":$(jobSpec.externalJobID), \\"data\\" : {\\"vehicleId\\": $(decode_cbor.vehicleId) , \\"encToken\\": $(decode_cbor.encToken) }}"] + + parse [type="jsonparse" path="data,distance" data="$(fetch)"] + dist_multiply [type="multiply" input="$(parse)", times="1000000000000000"] + + + latitude_parse [type="jsonparse" path="data,latitude" data="$(fetch)"] + lat_multiply [type="multiply" input="$(latitude_parse)", times="1000000000000000"] + + longitude_parse [type="jsonparse" path="data,longitude" data="$(fetch)"] + long_multiply [type="multiply" input="$(longitude_parse)", times="1000000000000000"] + + encode_mwr [type="ethabiencode" + abi="(bytes32 requestId, uint256 _distance, uint256 _latitude, uint256 _longitude)" + data="{\\"requestId\\": $(decode_log.requestId), \\"_distance\\": $(dist_multiply), \\"_latitude\\": $(lat_multiply), \\"_longitude\\": $(long_multiply)}" + ] + encode_tx [type="ethabiencode" + abi="fulfillOracleRequest2(bytes32 requestId, uint256 payment, address callbackAddress, bytes4 callbackFunctionId, uint256 expiration, bytes calldata data)" + data="{\\"requestId\\": $(decode_log.requestId), \\"payment\\": $(decode_log.payment), \\"callbackAddress\\": $(decode_log.callbackAddr), \\"callbackFunctionId\\": $(decode_log.callbackFunctionId), \\"expiration\\": $(decode_log.cancelExpiration), \\"data\\": $(encode_mwr)}" + ] + submit_tx [type="ethtx" to="0xB01106bFd6A5636f800D20112dFC348B95e5c00b" data="$(encode_tx)"] + + decode_log -> decode_cbor -> fetch -> parse -> dist_multiply -> latitude_parse -> lat_multiply -> longitude_parse -> long_multiply -> encode_mwr -> encode_tx -> submit_tx +""" \ No newline at end of file