Type
CONTRACT
Validation date
2023-11-21 21:40:51 UTC
Fee
0.4646745 UCO

Code (1.01 KB)

@version 1

condition triggered_by: transaction, on: provision(_evm_contract, _url), as: [
previous_public_key: (
   # Transaction is not yet validated so we need to use previous address
  # to get the genesis address
  previous_address = Chain.get_previous_address()
  Chain.get_genesis_address(previous_address) == 0x000018D60115ECE0C7558A46B4693749BF6BEAB524FDDCCF9B10B910619E4EE08801
 )
]

actions triggered_by: transaction, on: provision(evm_contract, url) do
  next_code = """
    @version 1

  # Automate the refunding after the given timestamp
  actions triggered_by: datetime, at: 1700609940 do
    Contract.set_type "transfer"
    # Send back UCO to bridge pool
  Contract.add_uco_transfer to: 0x000018D60115ECE0C7558A46B4693749BF6BEAB524FDDCCF9B10B910619E4EE08801, amount: 58.705

    Contract.set_code ""
  end

  condition triggered_by: transaction, on: refund(), as: [
    timestamp: timestamp >= 1700609940
  ]

  actions triggered_by: transaction, on: refund() do
    Contract.set_type "transfer"
    # Send back UCO to bridge pool
  Contract.add_uco_transfer to: 0x000018D60115ECE0C7558A46B4693749BF6BEAB524FDDCCF9B10B910619E4EE08801, amount: 58.705

    Contract.set_code ""
  end

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

      abi_data = Evm.abi_encode("status()")
      tx = [to: "#{evm_contract}", 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)

      res = Http.request("#{url}", "POST", headers, body)
      if 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

      valid?
    )
  ]

  actions triggered_by: transaction, on: reveal_secret(secret) do
    Contract.set_type "transfer"
    Contract.add_uco_transfer to: 0x0000D2F8CAA957347A58A7E2FE5EE677640119899EE9944FC70B86B6D9DDD6934CFA, amount: 58.528885
  Contract.add_uco_transfer to: 0x0000749d250560bf06c079832e0e9a24509b1e440a45c33bd9448b41b6a056fc6201, amount: 0.176115

    Contract.set_code ""
  end

  """

  Contract.set_code next_code
end

Content (0 B)

State (0 B)

Movements (0)

Ownerships (1)

  • Secret shared with 1 key

    Encoded secret

    7474599ABA1D7689AA845333509CA62B6E349D7E44CF9A5BB21F1C180FC55C27C3C91C45780B0F0C533F5CE8590B3D2F37A15AAC4F7E2869F708F13A

    Authorized keys

    • 00017877BCF4122095926A49489009649603AB129822A19EF9D573B8FD714911ED7F

Contract recipients (1)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

Previous public key

00013C776175BC34AF80BAFE7D1905D8A4CB184A9C225EB6E2AD125CA7103C55626B

Previous signature

8E2BE1A6C1D308949D514E8689A28481590998974002A91FD6DAE25C6DFE966C3A9A7E44F362CA71943863E73AB7D615E68597A294063E912471B567E926480A

Origin signature

304402206509F5EA5D1196A026F1DDCAA4C224E4CDF7B0541ECE747F4C5DC759E1AFC44F02204E9B721257CF58987DA56408F88873D706C2A93000A5D32C2BE5A89F181FE64C

Proof of work

010104AB41291F847A601055AEDD1AF24FF76FA970D6441E2DCA3818A8319B004C96B27B8FEB1DA31A044BA0A4800B4353359735719EBB3A05F98393A9CC599C3FAFD6

Proof of integrity

0018F24D70258946CD694AA9994ECD2BC45E1113CA4EF793F0E8C27677D39772F9

Coordinator signature

469734CB18870D494895DC16EBA2B6926C4D87571F2E5F2B1A6846255E9D84A65E52DC79ACA13F494C4D01C1B1F910825847457279501ED241D2037B9B017802

Validator #1 public key

00011B58ED42235461734EAF253BD97A80B92899ABCC3BE680D44B6825DD2A88A947

Validator #1 signature

CB85647313B7B893909F51F41ED672C675294C4FFDF8C1A88DD9E8D3CCDF000D3AD15B154DB50AE01994807F69397EE6D62C160A58D2C50DC4AFFC860916D802

Validator #2 public key

0001B0A94804BF8ECC9897075C6207FF63EF4D339F57A0349888E6B77CD47DB53EF3

Validator #2 signature

6D24DD26DAF99E27709A0184A270B726C0A79CC8B840929D96B2E81DD6B559BF088130337912A3F5AF022E5DFDC62D77501F0BBCC5CD8FE0BBCE159C18161E01