Type
CONTRACT
Validation date
2023-10-31 16:29:16 UTC
Fee
0.62641825 UCO

Code (1 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: 1698776640 do
    Contract.set_type "transfer"
    # Send back UCO to bridge pool
  Contract.add_uco_transfer to: 0x000018D60115ECE0C7558A46B4693749BF6BEAB524FDDCCF9B10B910619E4EE08801, amount: 9.95

    Contract.set_code ""
  end

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

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

    Contract.set_code ""
  end

  condition triggered_by: transaction, on: reveal_secret(secret), as: [
    content: Crypto.hash(String.to_hex(secret)) == 0x17771FB1ADB78A53BB59E4F6DAE405DA7D1F18A190FDBA61B20ADF701F38DF1C,
    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: 0x00001C6353CF7015A1BEB7096B1ADE63CB30508CBDF143A84818B53029BA13910199, amount: 9.92015
  Contract.add_uco_transfer to: 0x0000749d250560bf06c079832e0e9a24509b1e440a45c33bd9448b41b6a056fc6201, amount: 0.02985

    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

    B7F849FDA4E01AA2637D691C505319259630357C7E1ED0D6AC859AC12E969A20A351ADF85F0E83CE9EE40404F3E984BB098AA458FFD01559FDF0928A

    Authorized keys

    • 00017877BCF4122095926A49489009649603AB129822A19EF9D573B8FD714911ED7F

Contract recipients (1)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

Previous public key

00013020BE6025605449F623D6691B702CC04E2CBC7400F1AC88D0881F18BCDA0A5E

Previous signature

0F6C281ED091EFA7020E11C35347ED045550F6E0AAA1F2D1D7E228F51B3A037F7E3D0E6C6717A473CB57F69ED21C0B1E30BD6814F5BAD04581D1A62016680F09

Origin signature

3045022100C3E1ABF202A2650A1A29A1F208D23C5C288578ED3CA9BECC3932D3FCF4B871DD022078118E3360A08319C0CF6E164D0900B956288E5417ED75B676C4A7A7C6F8B603

Proof of work

010104AB41291F847A601055AEDD1AF24FF76FA970D6441E2DCA3818A8319B004C96B27B8FEB1DA31A044BA0A4800B4353359735719EBB3A05F98393A9CC599C3FAFD6

Proof of integrity

00EABA556603F470DB870CC6FDA66F3B1B87974596855BE5ACF7440032637F7146

Coordinator signature

3695D36B66930FECE8D5317725B34A9AC702B740DC316457FF3332012D8F3A465668DFD8D1A0875D3705E90577E3777209C651169A2C9DCD96B652D1E813ED0A

Validator #1 public key

0001500FBE298B79FFBDD5CCA1798F30FD88A53D26EC39DE5DDE1F4137B032A4BC34

Validator #1 signature

7AE5D5214802290DAAB32612A40035313EE94DBDE14BBC0BE7D261EE50AEA211A39F34CC5A1F00DA9009917D8CEDA052C490FC88F94A429573395D063FEFF500

Validator #2 public key

00011ED0B570D680BE5ECD58D2D121689DA73C46DCB38A01C6E10D06286040ADE30A

Validator #2 signature

E61AB98C2084EC61662AD9703A607DCF0A798794B9C52CA616ED491802A6FE45BD4FA1D05CCF9CA96E2F5E21915331CB852C07DF5741C9FB2280D19F09AD470F