Type
CONTRACT
Validation date
2025-06-23 20:40:52 UTC
Fee
0 UCO

Code (1.25 KB)

@version 1

condition triggered_by: transaction, on: refund(), as: [
  content: (
    valid? = false

    abi_data = Evm.abi_encode("status()")
    tx = [to: "0xD4C1c903AA56b0889f7BaAaD00630Ea0e4F1f312", 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://mainnet.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://eth-mainnet.g.alchemy.com/v2/tgCq5a1zrmYn4ZjEn74UAW9gUXlDPzQi"], "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: 100000


  Contract.set_code """
  @version 1

  export fun info() do
    [
      evm_contract: 0xD4C1c903AA56b0889f7BaAaD00630Ea0e4F1f312,
      evm_pool: 0x346dba8b51485ffbd4b07b0bcb84f48117751ad9,
      ae_pool: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D,
      status: 2 # REFUNDED
    ]
  end
  """
end

condition triggered_by: transaction, on: reveal_secret(secret), as: [
  content: Crypto.hash(String.to_hex(secret)) == 0xCA2731B8D433B44B1D030E65E1DF63290880D4A4D0A4C56E2223A8FE777C7BCE,
  address: (
    valid? = false

    abi_data = Evm.abi_encode("status()")
    tx = [to: "0xD4C1c903AA56b0889f7BaAaD00630Ea0e4F1f312", 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://mainnet.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://eth-mainnet.g.alchemy.com/v2/tgCq5a1zrmYn4ZjEn74UAW9gUXlDPzQi"], "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: 0x0000ABA81F0C5FE39AC8D42D49A00749C98DF4996D426E15846441D0718BA2DC3043, amount: 100000


  Contract.set_code """
  @version 1

  export fun info() do
    [
      evm_contract: 0xD4C1c903AA56b0889f7BaAaD00630Ea0e4F1f312,
      evm_pool: 0x346dba8b51485ffbd4b07b0bcb84f48117751ad9,
      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: 0xFDBBFE44C0635312F60578E62C2DE4B75F813738B4AE5B8D17AD3F284DE1F3D0,
    s: 0x3715B7E32313BF9E77CCA12BB5EAC4A350FB6BFF0ED613CD13BCC24D152B7F89,
    v: 28
  ]
end

export fun info() do
  [
    evm_contract: 0xD4C1c903AA56b0889f7BaAaD00630Ea0e4F1f312,
    evm_pool: 0x346dba8b51485ffbd4b07b0bcb84f48117751ad9,
    ae_pool: 0x00002075E9FB5329C7F5149802EB75F925D79B5FEC5BFCF09DC81993CB9C39FEAF5D,
    status: 0 # PENDING
  ]
end

Content (0 B)

State (0 B)

Movements (0)

Ownerships (1)

  • Secret shared with 1 key

    Encoded secret

    F6828B6C169D6CA3112B6A7226D2D2B1500E196C93E450918B2B48CEF22A3A6D9DD4E78BC5A2927D39E5BE2C38B7FC6DD3187B526185590C1678B120

    Authorized keys

    • 000122A6CD9ED07E46835D6E88E5BD0BEE84C3F5E5DBF8E916AD9B2EC912C44AFEC2

Contract recipients (0)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

Previous public key

0001567A4603CD07225C5223A4082CF5C55AFCE8157D8DA0A66D4D870D71489B85F6

Previous signature

8C67B6191582BEF5F540205C51531FD52F1829E8DEE4FD3F51823CEF9F9287C10819871EE0E4C04067A1A9A664AE1CD845506575719B0B79160F587475445A0D

Origin signature

3045022050421BEA72AF56EBAC27712577260A8FD587A9A03C954CD23CC5927DB400F386022100B2BA9F096DD58CD6A22DD8A7728090D9DBD12A005709422EEEA2C15B65FAC798

Proof of work

0102046C40DA35A5E56A9CE2DBF0098DB8DABF2B7F5E137C7758731F5ABAAEDC16CD890DD9D4D623206B863C8F60FBED5A54DEC7DC5EF2A67BE2F41DD3E3854D4B0331

Proof of integrity

00E22DC0D8E4A8EEA4362F748635A0E679119FC794861E7A7C1E0C423232AF63E2

Coordinator signature

6C0BDB78E80123D5E1FC1B2DC97E652595755416F46B852C1601E3666D0BD20761F3FDEEA337D02A17A94A78148591ADD602F9226C0A7C7BDB2AAD1A12151600

Validator #1 public key

00011518CD02E2B0009F828843512538A3F44A9CB493EB5E288376E4E45AD727AB3E

Validator #1 signature

F0CBBF409E4A5B996D7E3F775D9FD9C88E656C779F3DC4159004F9F8A1EB17E71DB018EC29CD81D227AB81F0C54AE5AE16FBC7CE68C9E2B224BAB2C25B6C0B09

Validator #2 public key

0001959E3582B8A0A55C8B199B564D5B10C740A45E5EF6B782032C790C3AAF0BCC3E

Validator #2 signature

29C9FABF0B458BE0099B566F332A2F9C92D13632292CD1FE285E09D9756295CEB834BF0B7BE4D3FE80062068C25616AE5B465DFB1466105935D6E2636156840E