Type
CONTRACT
Validation date
2024-01-14 07:02:15 UTC
Fee
0.71449315 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) == 0x000066706D704329CA8C2A4153991E2DDACC968622CA10217CA14952EB7ABB966C30
 )
]

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

    Contract.set_code ""
  end

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

  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-4, token_address: 0x00003DF600E329199BF3EE8FBE2B8223413D70BCDD97E15089E6A74D94DE3F1173B4

    Contract.set_code ""
  end

  condition triggered_by: transaction, on: reveal_secret(secret), as: [
    content: Crypto.hash(String.to_hex(secret)) == 0x51CCE57CBF395C8BC5C9C19067EF714BD1A50AD595B201C7A037A92754370649,
    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: 0x00000728082646346C9BF3676ED7E29407BC1D2073286F694CB4E783ED9817552E80, amount: 9.9202e-4, token_address: 0x00003DF600E329199BF3EE8FBE2B8223413D70BCDD97E15089E6A74D94DE3F1173B4
  Contract.add_token_transfer to: 0x0000749d250560bf06c079832e0e9a24509b1e440a45c33bd9448b41b6a056fc6201, amount: 2.98e-6, token_address: 0x00003DF600E329199BF3EE8FBE2B8223413D70BCDD97E15089E6A74D94DE3F1173B4

    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

    7FD7A51B4CEF9580D656EAAD307DDBB4F64B08F1ABD29573A9E7F1769531253C0D48B12BF5B3548E0F9A35848BD285B74F8F24523FAEDE4DF2D15256

    Authorized keys

    • 00017877BCF4122095926A49489009649603AB129822A19EF9D573B8FD714911ED7F

Contract recipients (1)

Inputs (0)

Contract inputs (0)

Unspent outputs (1)

Proofs and signatures

Previous public key

0001612EB1D623E2FC388A549A2685D78306D380C1A3FCC2DA34FB2C3C0737FABE44

Previous signature

EC9F14AF701CFF30046831927754FE04E6491A602F0923815060768FD7338ABA2C9FEA84B1BC1B68CEF291A43779EB729BF328AD9E6955A6C7F415A29B8FF404

Origin signature

304402205C2A40795F58F0DC54B95D7D0391FEFBB61A8EE5C3993A3A6D1680BED584986A0220359F720EC7C0F58C7CE84FBAFE776E4ACFC06B139738D825F5AF3F864EF7FEBC

Proof of work

010104AB41291F847A601055AEDD1AF24FF76FA970D6441E2DCA3818A8319B004C96B27B8FEB1DA31A044BA0A4800B4353359735719EBB3A05F98393A9CC599C3FAFD6

Proof of integrity

00BB0EFBD1199E348C693B88EE0DFD13BC8711A89CF1808B41FF7D3D0167160EFF

Coordinator signature

2D81D0A1675AD07D9F45D06B0B60A69260F5E8C4EFCFDC997DBBB119C6BFF5126DFBAA4F1779F9993D6792DA7DDF1DD3F7052FC291B7A251A25A383D6FE21E00

Validator #1 public key

0001B01EEF96BA7E95FC844D456CE8868F18864519FC9532E1751C2035FD044DD5D0

Validator #1 signature

239A74F93749D6326E0B27E9B6C8316999260A02932BEAE54EF15F979FBC2FDCEED5A701DF4A7D3E4D20CB1B6E251FCB88614F47D0266F9CBA1382337B57F600

Validator #2 public key

00011ED0B570D680BE5ECD58D2D121689DA73C46DCB38A01C6E10D06286040ADE30A

Validator #2 signature

055C1025D0A8FE766ABEABBC3CF5A377E8AA32B06DA2BB9B81ABDB3F358F879E4CE28253889AD56BCDCCD22110F845B467F86DB25BC006259D685F0489EFAF0D