@version 1
condition triggered_by: transaction, on: refund(), as: [
content: (
valid? = false
abi_data = Evm.abi_encode("status()")
tx = [to: "0x4d176e755cd61166ecc9b3a564ffbd60c3f4a262", data: "0x#{abi_data}"]
request = [jsonrpc: "2.0", id: "1", method: "eth_call", params: [tx, "latest"]]
headers = ["Content-Type": "application/json"]
body = Json.to_string(request)
evm_responses = query_evm_apis(["https://polygon-mainnet.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://polygon-mainnet.g.alchemy.com/v2/0aM2uAp3J-LsOlijDBZ3aZiCUvZdjiHb"], "POST", headers, body)
for res in evm_responses do
if !valid? && res.status == 200 && Json.is_valid?(res.body) do
response = Json.parse(res.body)
result = Map.get(response, "result")
if result != nil do
decoded_abi = Evm.abi_decode("(uint)", result)
# Refund status is 2
valid? = List.at(decoded_abi, 0) == 2
end
end
end
valid?
)
]
actions triggered_by: transaction, on: refund() do
Contract.set_type "transfer"
# Send back UCO to bridge pool
Contract.add_uco_transfer to: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D, amount: 109.49713239
Contract.set_code """
@version 1
export fun info() do
[
evm_contract: 0x4d176e755cd61166ecc9b3a564ffbd60c3f4a262,
evm_pool: 0xd5ca9f76495b853a5054814a10b6365ee8ed745b,
ae_pool: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D,
status: 2 # REFUNDED
]
end
"""
end
condition triggered_by: transaction, on: reveal_secret(secret), as: [
content: Crypto.hash(String.to_hex(secret)) == 0x5EEB575A6FBE4630007B9441D8E93BF9FF9B3F3BBF312712EC9BE924483BC1FE,
address: (
valid? = false
abi_data = Evm.abi_encode("status()")
tx = [to: "0x4d176e755cd61166ecc9b3a564ffbd60c3f4a262", data: "0x#{abi_data}"]
request = [jsonrpc: "2.0", id: "1", method: "eth_call", params: [tx, "latest"]]
headers = ["Content-Type": "application/json"]
body = Json.to_string(request)
responses = query_evm_apis(["https://polygon-mainnet.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://polygon-mainnet.g.alchemy.com/v2/0aM2uAp3J-LsOlijDBZ3aZiCUvZdjiHb"], "POST", headers, body)
for res in responses do
if !valid? && res.status == 200 && Json.is_valid?(res.body) do
response = Json.parse(res.body)
result = Map.get(response, "result")
if result != nil do
decoded_abi = Evm.abi_decode("(uint)", result)
# Withdrawn status is 1
valid? = List.at(decoded_abi, 0) == 1
end
end
end
valid?
)
]
actions triggered_by: transaction, on: reveal_secret(secret) do
Contract.set_type "transfer"
Contract.add_uco_transfer to: 0x000064A6D0868320FE9AB0F1D3E9AE2BF405E3F71B1F7DE7D89C74CDC70824F3265A, amount: 109.168641
Contract.add_uco_transfer to: 0x00007db8dc8dc7808c2e1f681b593a08ff8aa708447ae3a410b347ab15c562ec2126, amount: 0.32849139
Contract.set_code """
@version 1
export fun info() do
[
evm_contract: 0x4d176e755cd61166ecc9b3a564ffbd60c3f4a262,
evm_pool: 0xd5ca9f76495b853a5054814a10b6365ee8ed745b,
ae_pool: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D,
status: 1 # WITHDRAWN
]
end
"""
end
fun query_evm_apis(endpoints, method, headers, body) do
requests = []
for endpoint in endpoints do
requests = List.append(requests, url: endpoint, method: method, headers: headers, body: body)
end
Http.request_many(requests, false)
end
export fun get_provision_signature() do
[
r: 0x6651A1C89D6A72ABFC07EC0ED632F9EFD2A819636CE0B472FC4C1BAA7D33926E,
s: 0x1FF50259E595F0382B117C8D588C7E83AB81748A62A9475E97F0CBA0785E95FC,
v: 27
]
end
export fun info() do
[
evm_contract: 0x4d176e755cd61166ecc9b3a564ffbd60c3f4a262,
evm_pool: 0xd5ca9f76495b853a5054814a10b6365ee8ed745b,
ae_pool: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D,
status: 0 # PENDING
]
end
Content (0 B)
State (0 B)
-
Secret shared with 1 key
Encoded secret
2465A0A27C5D1127C7FF56CD7AA000BFB2C73A8E977A44C02F3516702E50B417AE124ED798B8854E4FD3C26F90524F6D03FFCC9EEB0A469EB9F40253
Authorized keys
- 000122A6CD9ED07E46835D6E88E5BD0BEE84C3F5E5DBF8E916AD9B2EC912C44AFEC2
Contract recipients (0)
Inputs (0)
Contract inputs (0)
Unspent outputs (1)
-
From 0000CB7F...3859At 2024-07-11 16:23:48 UTCAmount 110.35138413 UCO
Previous public key
0001D7BB7052DC76542640EB6A075077878DD955B4A452D551E540859209FA3B0DF6
Previous signature
1AD03C3C92AF5B7F1C66AAC2BE8BBA705913E18AC8454DF44DC0EC4F7F83EB6DD1131FD3135A2FC9FA0398F499E0F69C8F26FD994E2EBDBFCB02A86954880502
Origin signature
304602210088601D8D9FA22003645A619DBE38F9FC6803E39D5143B65B241482F06C90772B0221009D4146DC4C843D2918B77C274345AE5E9345695C908D620C031643D2E293F16A
Proof of work
010104294BD98CA56FA4D6BF0A5157D36210B3E0B8FE1EFD897F77F88F6C0C07FE68F43D0B2E1F6C27E9A902D7C311E0491EC75EB2406FD7B60705ACF4909E2DC026D9
Proof of integrity
003566CD70A437698987AF230C6F731897740F0A8837D9B89304F88D2CBB8184E3
Coordinator signature
12B20C04B6F3C4784708DB3D43A96E12D31B53B45D21D1D0BCEFD5DC697731AED5A98AF141AFDD7C302847D515C4C658492ABF764D9668CA7A871AAE0EE5E70E
Validator #1 public key
00016BD1443F1CD524796698001AE001C31DBC438FEE3DEC41D74C61D37A1271DB39
Validator #1 signature
143712D6088079AD84D39E2CC9942DF00C087F4D25BE26C033431A15CD388B1406979331856EE9ADF08E61360335EED8590EF619BE102322FBF3569A510FF30C
Validator #2 public key
00014C8E344202B3E990B579E41372C6FD0D1FE82C5F41339A37AFB3E0BB3642E0E2
Validator #2 signature
4DD491A2F12FCD401446837D96358EFE6F787855BD51F0C6B2A82E2B5C3334E2FFA67E2163C42C47DA6889DA16501C3226D5CAC8A99314B4BA76A34FBEA46401