Type
CONTRACT
Validation date
2024-07-11 16:23:48 UTC
Fee
0 UCO

Code (1.32 KB)

@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)

Movements (0)

Ownerships (1)

  • Secret shared with 1 key

    Encoded secret

    2465A0A27C5D1127C7FF56CD7AA000BFB2C73A8E977A44C02F3516702E50B417AE124ED798B8854E4FD3C26F90524F6D03FFCC9EEB0A469EB9F40253

    Authorized keys

    • 000122A6CD9ED07E46835D6E88E5BD0BEE84C3F5E5DBF8E916AD9B2EC912C44AFEC2

Contract recipients (0)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

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