Type
CONTRACT
Validation date
2023-11-02 14:40:03 UTC
Fee
0.87315843 UCO

Code (1.06 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) == 0x00008DD22E7496E86901E9B276A1BE6F9512EB09980CC04C7B76495EF37D5666A709
 )
]

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: 1698943140 do
    Contract.set_type "transfer"
    # Burn the non withdrawed tokens
  Contract.add_token_transfer to: 0x00000000000000000000000000000000000000000000000000000000000000000000, amount: 9.95e-5, token_address: 0x0000288BF6F0E12457B125DC54D2DFA4EB010BE3073CF02E10FB79B696180F55B827

    Contract.set_code ""
  end

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

  actions triggered_by: transaction, on: refund() do
    Contract.set_type "transfer"
    # Burn the non withdrawed tokens
  Contract.add_token_transfer to: 0x00000000000000000000000000000000000000000000000000000000000000000000, amount: 9.95e-5, token_address: 0x0000288BF6F0E12457B125DC54D2DFA4EB010BE3073CF02E10FB79B696180F55B827

    Contract.set_code ""
  end

  condition triggered_by: transaction, on: reveal_secret(secret), as: [
    content: Crypto.hash(String.to_hex(secret)) == 0x91AB3CCCF67371331DB8723E190732EA51E1F8503E2D0F61F52B0BE5726372F8,
    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_token_transfer to: 0x00001C6353CF7015A1BEB7096B1ADE63CB30508CBDF143A84818B53029BA13910199, amount: 9.921e-5, token_address: 0x0000288BF6F0E12457B125DC54D2DFA4EB010BE3073CF02E10FB79B696180F55B827
  Contract.add_token_transfer to: 0x0000749d250560bf06c079832e0e9a24509b1e440a45c33bd9448b41b6a056fc6201, amount: 2.9e-7, token_address: 0x0000288BF6F0E12457B125DC54D2DFA4EB010BE3073CF02E10FB79B696180F55B827

    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

    F1C3BEC0E574DAF8B0D1261404E5F1A23FC2BB831B50DB9141A5752B3472D70DB46174727D3767FA787564EBC050B7ACBE42D182E56ABFC18DFC0E1B

    Authorized keys

    • 00017877BCF4122095926A49489009649603AB129822A19EF9D573B8FD714911ED7F

Contract recipients (1)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

Previous public key

0001FF288CA089EE4CC06D3573A483CA077FAA01D639BEFC587AE1982034BA40B32E

Previous signature

C6B9FF89BD647198D7E0DEC9486830992D9117B07FCED6EBAF0722C5C44DC548FF49A751FE466F8F44E8770421A46D6B1A7C0805F288EE8D58F51E35932EF80F

Origin signature

304402206E062D19811F4E0C09FABC78166442CA0E0EFD0D84CE0CEEEB6AE7C04EAC9D7902205FF56B0A380F4B7FDEACD772A7E563FB17726551BF1D21509E4ECBED16676B6A

Proof of work

010104AB41291F847A601055AEDD1AF24FF76FA970D6441E2DCA3818A8319B004C96B27B8FEB1DA31A044BA0A4800B4353359735719EBB3A05F98393A9CC599C3FAFD6

Proof of integrity

00B3A0526143FE5CB319DEF8B4ED1ACB8C7A455E3FD1E6870F12CCE3F39D65D16C

Coordinator signature

4C413C0E21D6E9FEEF14D3CFB83513DC85FB2EA2B511D8F1025A45152E3B2E816F94109C2A169F5C5F49DD3783F7E687A2E674FD548D7F02D21E722C51FC010E

Validator #1 public key

0001B0A94804BF8ECC9897075C6207FF63EF4D339F57A0349888E6B77CD47DB53EF3

Validator #1 signature

FF9F9D4F66F5F481B483D678EF543842AF4F77F174803413915C68202BCB92C9AADE343C7CCF533C0A66008723CA50869F61EDE75225AA411ADC2BBA9BE99B07

Validator #2 public key

00011B58ED42235461734EAF253BD97A80B92899ABCC3BE680D44B6825DD2A88A947

Validator #2 signature

8032001801ABCE5A0EB860E83D20C845865AA792E6D7A360E6D508747EC5FAAD1C77A8FC04C57E232728727565AC2CE2156076DEA77E3560FE64E27A7C828B03