Type
CONTRACT
Validation date
2024-11-07 14:40:08 UTC
Fee
0 UCO

Code (4.19 KB)

@version 1

####################################
# EVM => Archethic : Request funds #
####################################

condition triggered_by: transaction, on: request_funds(end_time, amount, user_address, secret_hash, evm_tx_address, evm_contract, chain_id), as: [
  type: "contract",
  code: valid_chargeable_code?(end_time, amount, user_address, secret_hash),
  timestamp: (
    # End time cannot be less than now or more than 1 day
    now = Time.now()
    end_time > now && end_time <= now + 86400
  ),
  uco_transfers: (
    # Ensure the pool has enough UCO to send the requested fund
    contract.balance.uco >= amount
  ),
  content: List.in?([11155111,80002,97], chain_id),
  token_transfers: (
    charged_contracts = State.get("charged_contracts", Map.new())
    !contract_already_charged?(charged_contracts, chain_id, evm_contract)
  ),
  address: (
    valid? = false

    tx_receipt_request = get_tx_receipt_request(evm_tx_address)
    call_status_request = get_call_request(evm_contract, "status()", 2)
    call_enough_funds_request = get_call_request(evm_contract, "enoughFunds()", 3)
    call_hash_request = get_call_request(evm_contract, "hash()", 4)
    call_end_time_request = get_call_request(evm_contract, "lockTime()", 5)
    call_amount_request = get_call_request(evm_contract, "amount()", 6)

    body = Json.to_string([
      tx_receipt_request,
      call_status_request,
      call_enough_funds_request,
      call_hash_request,
      call_end_time_request,
      call_amount_request
    ])

    chain_data = get_chain_data(chain_id)
    headers = ["Content-Type": "application/json"]

    evm_responses = query_evm_apis(chain_data.endpoints, "POST", headers, body)
    for res in evm_responses do
      if !valid? && res.status == 200 && Json.is_valid?(res.body) do
        responses = Json.parse(res.body)

        tx_receipt = get_response(responses, 1)
        call_status = get_response(responses, 2)
        call_enough_funds = get_response(responses, 3)
        call_hash = get_response(responses, 4)
        call_end_time = get_response(responses, 5)
        call_amount = get_response(responses, 6)

        if !any_nil?([tx_receipt, call_status, call_enough_funds, call_hash, call_end_time, call_amount]) do
          # event = Crypto.hash("ContractMinted(address,uint256)", "keccak256")
          event = "0x8640c3cb3cba5653efe5a3766dc7a9fb9b02102a9f97fbe9ea39f0082c3bf497"
          valid_tx_receipt? = valid_tx_receipt?(tx_receipt, chain_data.proxy_address, evm_contract, event)
          # Pending is status 0
          valid_status? = valid_status?(call_status, 0)
          enough_funds? = enough_funds?(call_enough_funds)
          valid_hash? = valid_hash?(call_hash, secret_hash)
          valid_end_time? = valid_end_time?(call_end_time, end_time)
          valid_amount? = valid_amount?(call_amount, amount, chain_data.decimals)

          valid? = valid_tx_receipt? && valid_status? && enough_funds? && valid_hash? && valid_end_time? && valid_amount?
        end
      end
    end

    valid?
  )
]

actions triggered_by: transaction, on: request_funds(end_time, amount, _, secret_hash, _, evm_contract, chain_id) do
  chain_data = get_chain_data(chain_id)

  # Delete old contract where end_time is over
  charged_contracts = State.get("charged_contracts", Map.new())
  charged_contracts = delete_old_charged_contracts(charged_contracts)
  charged_contracts = add_charged_contracts(charged_contracts, chain_id, evm_contract, end_time)
  State.set("charged_contracts", charged_contracts)

  signature = sign_for_evm(secret_hash)

  proxy_address = Map.get(chain_data, "proxy_address")

  Contract.set_type("transfer")
  Contract.add_recipient(
    address: transaction.address,
    action: "provision",
    args: [evm_contract, chain_data.endpoints, signature, proxy_address]
  )
  Contract.add_uco_transfer(to: transaction.address, amount: amount)
end

##########################################
# Archethic => EVM : Request secret hash #
##########################################

condition triggered_by: transaction, on: request_secret_hash(htlc_genesis_address, amount, user_address, chain_id, evm_user_address), as: [
  type: "transfer",
  code: valid_signed_code?(htlc_genesis_address, amount, user_address),
  content: List.in?([11155111,80002,97], chain_id),
  uco_transfers:
    (
      htlc_genesis_address = String.to_hex(htlc_genesis_address)
      Map.get(htlc_genesis_address) == amount
    )
]

actions triggered_by: transaction, on: request_secret_hash(htlc_genesis_address, amount, _user_address, chain_id, evm_user_address) do
  # Here delete old secret that hasn't been used before endTime
  requested_secrets = State.get("requested_secrets", Map.new())

  secret = Crypto.hmac(transaction.address)
  secret_hash = Crypto.hash(secret, "sha256")

  protocol_fee = Contract.call_function(0x0000795bfd6ca2f5ea9f378c20775caf798e9bfbff6aec94bf87ad8d59233b4fa299, "get_protocol_fee", [])
  chain_data = get_chain_data(chain_id)
  decimals = Map.get(chain_data, "decimals")

  fee_amount = amount * protocol_fee / 100
  evm_amount = amount - fee_amount
  evm_big_amount = Math.bigint(evm_amount, decimals)

  abi_data =
    Evm.abi_encode("(bytes32, bytes32, uint, address, uint)", [
      Crypto.hash(htlc_genesis_address),
      secret_hash,
      chain_id,
      evm_user_address,
      evm_big_amount
    ])

  signature_data = Crypto.hash(abi_data, "keccak256")

  # Build signature for EVM verification
  signature = sign_for_evm(signature_data)

  # Calculate endtime now + 2 hours
  now = Time.now()
  end_time = now - Math.rem(now, 60) + 7200

  # Add secret and signature in content
  htlc_map = [
    hmac_address: transaction.address,
    end_time: end_time,
    chain_id: chain_id,
    evm_user_address: evm_user_address
  ]

  htlc_genesis_address = String.to_hex(htlc_genesis_address)
  requested_secrets = Map.set(requested_secrets, htlc_genesis_address, htlc_map)
  State.set("requested_secrets", requested_secrets)

  proxy_address = Map.get(chain_data, "proxy_address")

  Contract.add_recipient(
    address: htlc_genesis_address,
    action: "set_secret_hash",
    args: [secret_hash, signature, end_time, proxy_address]
  )
end

####################################
# Archethic => EVM : Reveal secret #
####################################

condition triggered_by: transaction, on: reveal_secret(htlc_genesis_address, evm_tx_address, evm_contract), as: [
  type: "transfer",
  content: (
    # Ensure htlc_genesis_address exists in pool state
    # and end_time has not been reached
    valid? = false

    htlc_genesis_address = String.to_hex(htlc_genesis_address)
    requested_secrets = State.get("requested_secrets", Map.new())
    htlc_map = Map.get(requested_secrets, htlc_genesis_address)

    if htlc_map != nil do
      valid? = htlc_map.end_time > Time.now()
    end

    valid?
  ),
  address: (
    valid? = false
    htlc_map = nil

    htlc_genesis_address = String.to_hex(htlc_genesis_address)
    requested_secrets = State.get("requested_secrets", Map.new())
    htlc_map = Map.get(requested_secrets, htlc_genesis_address)

    if htlc_map != nil do
      tx_receipt_request = get_tx_receipt_request(evm_tx_address)
      call_status_request = get_call_request(evm_contract, "status()", 2)
      call_enough_funds_request = get_call_request(evm_contract, "enoughFunds()", 3)
      call_hash_request = get_call_request(evm_contract, "hash()", 4)
      call_end_time_request = get_call_request(evm_contract, "lockTime()", 5)
      call_amount_request = get_call_request(evm_contract, "amount()", 6)
      call_recipient_request = get_call_request(evm_contract, "recipient()", 7)

      body = Json.to_string([
        tx_receipt_request,
        call_status_request,
        call_enough_funds_request,
        call_hash_request,
        call_end_time_request,
        call_amount_request,
        call_recipient_request
      ])

      chain_data = get_chain_data(htlc_map.chain_id)
      headers = ["Content-Type": "application/json"]

      evm_responses = query_evm_apis(chain_data.endpoints, "POST", headers, body)
      for res in evm_responses do
        if !valid? && res.status == 200 && Json.is_valid?(res.body) do
          responses = Json.parse(res.body)

          tx_receipt = get_response(responses, 1)
          call_status = get_response(responses, 2)
          call_enough_funds = get_response(responses, 3)
          call_hash = get_response(responses, 4)
          call_end_time = get_response(responses, 5)
          call_amount = get_response(responses, 6)
          call_recipient = get_response(responses, 7)

          if !any_nil?([tx_receipt, call_status, call_enough_funds, call_hash, call_end_time, call_amount, call_recipient]) do
            # event = Crypto.hash("ContractProvisioned(address,uint256)", "keccak256")
            event = "0x0c5d1829e93110ff9c24aa8ac41893b65509108384b3036d4f73ffccb235e9ec"

            secret = Crypto.hmac(htlc_map.hmac_address)
            secret_hash = Crypto.hash(secret, "sha256")

            htlc_data = Contract.call_function(htlc_genesis_address, "get_htlc_data", [])

            valid_tx_receipt? = valid_tx_receipt?(tx_receipt, chain_data.proxy_address, evm_contract, event)
            # Pending is status 0
            valid_status? = valid_status?(call_status, 0)
            enough_funds? = enough_funds?(call_enough_funds)
            valid_hash? = valid_hash?(call_hash, secret_hash)
            valid_end_time? = valid_end_time?(call_end_time, htlc_map.end_time)
            valid_amount? = valid_amount?(call_amount, htlc_data.amount, chain_data.decimals)
            valid_recipient? = valid_recipient?(call_recipient, Map.get(htlc_map, "evm_user_address"))

            valid? = valid_tx_receipt? && valid_status? && enough_funds? && valid_hash? && valid_end_time? && valid_amount? && valid_recipient?
          end
        end
      end
    end

    valid?
  )
]

actions triggered_by: transaction, on: reveal_secret(htlc_genesis_address, _evm_tx_address, evm_contract_address) do
  requested_secrets = State.get("requested_secrets", Map.new())

  htlc_genesis_address = String.to_hex(htlc_genesis_address)
  htlc_map = Map.get(requested_secrets, htlc_genesis_address)

  requested_secrets = Map.delete(requested_secrets, htlc_genesis_address)
  State.set("requested_secrets", requested_secrets)

  secret = Crypto.hmac(htlc_map.hmac_address)
  signature = sign_for_evm(secret)

  Contract.add_recipient(
    address: htlc_genesis_address,
    action: "reveal_secret",
    args: [secret, signature, evm_contract_address]
  )
end

condition triggered_by: transaction, on: refund(htlc_genesis_address), as: [
  content: (
    # Ensure htlc_genesis_address exists in pool state
    # and end_time has not been reached
    valid? = false

    htlc_genesis_address = String.to_hex(htlc_genesis_address)
    requested_secrets = State.get("requested_secrets", Map.new())
    htlc_map = Map.get(requested_secrets, htlc_genesis_address)

    if htlc_map != nil do
      valid? = htlc_map.end_time <= Time.now()
    end

    valid?
  )
]

actions triggered_by: transaction, on: refund(htlc_genesis_address) do
  requested_secrets = State.get("requested_secrets", Map.new())
  htlc_genesis_address = String.to_hex(htlc_genesis_address)
  htlc_map = Map.get(requested_secrets, htlc_genesis_address)

  secret = Crypto.hmac(htlc_map.hmac_address)
  # Perform a first hash to combine data and "refund"
  sig_payload = "#{secret}#{String.to_hex("refund")}"
  signature_data = Crypto.hash(sig_payload, "keccak256")

  signature = sign_for_evm(signature_data)

  requested_secrets = Map.delete(requested_secrets, htlc_genesis_address)
  State.set("requested_secrets", requested_secrets)

  Contract.add_recipient(
    address: htlc_genesis_address,
    action: "refund",
    args: [secret, signature]
  )
end

condition triggered_by: transaction, on: update_code(new_code), as: [
  previous_public_key:
    (
      # Pool code can only be updated from the master chain if the bridge

      # 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) == 0x000020a6911478356ca264174e35d26021fb4cbe870703bb7c3859e01cdb34bcd823
    ),
  code: Code.is_valid?(new_code)
]

actions triggered_by: transaction, on: update_code(new_code) do
  Contract.set_type("contract")
  Contract.set_code(new_code)
end

####################
# Public functions #
####################

export fun get_token_address() do
  "UCO"
end

#####################
# Private functions #
#####################

fun contract_already_charged?(charged_contracts, chain_id, evm_contract) do
  chain_id = String.from_number(chain_id)
  evm_contract = String.to_lowercase(evm_contract)

  contracts = Map.get(charged_contracts, chain_id, Map.new())

  Map.get(contracts, evm_contract, nil) != nil
end

fun add_charged_contracts(charged_contracts, chain_id, evm_contract, end_time) do
  chain_id = String.from_number(chain_id)
  evm_contract = String.to_lowercase(evm_contract)

  contracts = Map.get(charged_contracts, chain_id, Map.new())
  updated_contracts = Map.set(contracts, evm_contract, end_time)

  Map.set(charged_contracts, chain_id, updated_contracts)
end

fun delete_old_charged_contracts(charged_contracts) do
  now = Time.now()
  for chain_id in Map.keys(charged_contracts) do
    contracts = Map.get(charged_contracts, chain_id)

    for address in Map.keys(contracts) do
      contract_end_time = Map.get(contracts, address)
      if contract_end_time <= now do
        contracts = Map.delete(contracts, address)
      end
    end

    charged_contracts = Map.set(charged_contracts, chain_id, contracts)
  end

  charged_contracts
end

fun valid_chargeable_code?(end_time, amount, user_address, secret_hash) do
  args = [
    end_time,
    user_address,
    0x000018d60115ece0c7558a46b4693749bf6beab524fddccf9b10b910619e4ee08801,
    secret_hash,
    "UCO",
    amount
  ]

  expected_code = Contract.call_function(0x0000795bfd6ca2f5ea9f378c20775caf798e9bfbff6aec94bf87ad8d59233b4fa299, "get_chargeable_htlc", args)

  Code.is_same?(expected_code, transaction.code)
end

fun valid_signed_code?(htlc_address, amount, user_address) do
  valid? = false

  htlc_address = String.to_hex(htlc_address)
  last_htlc_transaction = Chain.get_last_transaction(htlc_address)

  if last_htlc_transaction != nil do
    args = [
      user_address,
      0x000018d60115ece0c7558a46b4693749bf6beab524fddccf9b10b910619e4ee08801,
      "UCO",
      amount
    ]

    expected_code = Contract.call_function(0x0000795bfd6ca2f5ea9f378c20775caf798e9bfbff6aec94bf87ad8d59233b4fa299, "get_signed_htlc", args)

    valid? = Code.is_same?(expected_code, last_htlc_transaction.code)
  end

  valid?
end

fun get_chain_data(chain_id) do
  data = Map.new()
  
  if chain_id == 11155111 do
    data = Map.set(data, "endpoints", ["https://sepolia.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://eth-sepolia.g.alchemy.com/v2/eLhVAxz79HO5n2y98mdIl_gMkKSDc3G8"])
    data = Map.set(data, "proxy_address", "0x08bfc8ba9fd137fb632f79548b150fe0be493254")
    data = Map.set(data, "decimals", 8)
  end

  if chain_id == 80002 do
    data = Map.set(data, "endpoints", ["https://polygon-amoy.infura.io/v3/3a7a2dbdbec046a4961550ddf8c7d78a","https://polygon-amoy.g.alchemy.com/v2/eLhVAxz79HO5n2y98mdIl_gMkKSDc3G8"])
    data = Map.set(data, "proxy_address", "0xfcc8e7e4a007c13672a43107dd0ff45bbc23c8cf")
    data = Map.set(data, "decimals", 18)
  end

  if chain_id == 97 do
    data = Map.set(data, "endpoints", ["https://data-seed-prebsc-1-s2.bnbchain.org:8545","https://bsc-testnet.bnbchain.org"])
    data = Map.set(data, "proxy_address", "0xb361b5ac4eaeb918dced9d60417975c89556ddea")
    data = Map.set(data, "decimals", 18)
  end

  data
end

fun get_call_request(evm_contract, call, id) do
  abi_data = Evm.abi_encode(call)
  tx = [to: evm_contract, data: "0x#{abi_data}"]
  [jsonrpc: "2.0", id: id, method: "eth_call", params: [tx, "latest"]]
end

fun get_response(responses, id) do
  response = nil
  for res in responses do
    if res.id == id do
      response = Map.get(res, "result")
    end
  end
  response
end

fun any_nil?(list) do
  nil? = false
  for i in list do
    if i == nil do
      nil? = true
    end
  end
  nil?
end

fun get_tx_receipt_request(evm_tx_address) do
  [
    jsonrpc: "2.0",
    id: 1,
    method: "eth_getTransactionReceipt",
    params: [evm_tx_address]
  ]
end

fun valid_tx_receipt?(tx_receipt, proxy_address, evm_contract, expected_event) do
  logs = nil
  for log in tx_receipt.logs do
    if String.to_lowercase(log.address) == proxy_address do
      logs = log
    end
  end

  if logs != nil do
    # Transaction is valid
    valid_status? = tx_receipt.status == "0x1"
    # Transaction interacted with proxy address
    valid_proxy_address? = String.to_lowercase(tx_receipt.to) == proxy_address
    # Logs are comming from proxy address
    valid_logs_address? = String.to_lowercase(logs.address) == proxy_address
    # Pool contract emmited expected event
    event = List.at(logs.topics, 0)
    valid_event? = String.to_lowercase(event) == expected_event
    # Contract minted match evm_contract in parameters
    decoded_data = Evm.abi_decode("(address)", List.at(logs.topics, 1))
    topic_address = List.at(decoded_data, 0)
    valid_contract_address? = topic_address == String.to_lowercase(evm_contract)

    valid_status? && valid_proxy_address? && valid_logs_address? && valid_event? && valid_contract_address?
  else
    false
  end
end

fun valid_status?(call_status, expected_status) do
  decoded_data = Evm.abi_decode("(uint)", call_status)
  List.at(decoded_data, 0) == expected_status
end

fun enough_funds?(call_enough_funds) do
  decoded_data = Evm.abi_decode("(bool)", call_enough_funds)
  List.at(decoded_data, 0) == true
end

fun valid_hash?(call_hash, secret_hash) do
  secret_hash = "0x#{String.to_lowercase(secret_hash)}"
  decoded_data = Evm.abi_decode("(bytes32)", call_hash)
  List.at(decoded_data, 0) == secret_hash
end

fun valid_end_time?(call_end_time, end_time) do
  decoded_data = Evm.abi_decode("(uint256)", call_end_time)
  List.at(decoded_data, 0) == end_time
end

fun valid_amount?(call_amount, amount, decimals) do
  decoded_data = Evm.abi_decode("(uint256)", call_amount)
  big_int_amount = List.at(decoded_data, 0)
  decimal_amount = big_int_amount / Math.pow(10, decimals)
  decimal_amount == amount
end

fun valid_recipient?(call_recipient, evm_user_address) do
  decoded_data = Evm.abi_decode("(address)", call_recipient)
   String.to_uppercase(List.at(decoded_data, 0)) == String.to_uppercase(evm_user_address)
end

fun sign_for_evm(data) do
  prefix = String.to_hex("\x19Ethereum Signed Message:\n32")
  signature_payload = Crypto.hash("#{prefix}#{data}", "keccak256")

  sig = Crypto.sign_with_recovery(signature_payload)

  if sig.v == 0 do
    sig = Map.set(sig, "v", 27)
  else
    sig = Map.set(sig, "v", 28)
  end

  sig
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

Content (0 B)

State (21.92 KB)

 
{
  "charged_contracts": {
    "11155111": {},
    "80001": {},
    "80002": {},
    "97": {
      "0xfc434d1595c2604a16638018cd9b043d1dbd5a3e": 1730997180
    }
  },
  "requested_secrets": {
    "000073D9E514F2130C30990E837CC16298B926DE0353E524557DA429B1F87E5FB0EB": {
      "chain_id": 11155111,
      "end_time": 1724892780,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "0000F5B96A56B5362BACF410DDB91002C5085CA40981315FFC0D8BB0D8250F54E167"
    },
    "0000082144E2CA89D31385C882B2526B81B24FCB57020EF39316E71B696581F8679F": {
      "chain_id": 80002,
      "end_time": 1730314200,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "00002C380FA5AB5A4B880624EDEE3A1F0E30EC9B4358E8D94D1FF55A05B4204521ED"
    },
    "0000379D7C45D179F08C6B8E74AECF1E156E6A485C7F76C1D3F8248521120244AE8A": {
      "chain_id": 11155111,
      "end_time": 1724933640,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "000057871231BBF7339F7D41F3585C955D6765BF9578648E915041D317CD53FF6405"
    },
    "0000FACF021F44DB0EB3FC237A39B6C9A13DD1A86B49C14280E6E1EBB4719210488B": {
      "chain_id": 97,
      "end_time": 1729675320,
      "evm_user_address": "0xc1624f40934dea688C59b1c60eC0187F422B3e8C",
      "hmac_address": "00002C2EA5F89F6FFAA48C41496272631E373AD082349BBCF9E97966DF9FBAC7165A"
    },
    "0000276BA66E52D85684A4EDF08CAAF7009A5C599804EB2DBE3991A9241D3F3E5432": {
      "chain_id": 11155111,
      "end_time": 1724851380,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000489D0076234065CFF408C2FE79FD805BB34C85EE71F53BCBE0E6D463A826A425"
    },
    "00001CFA4F574F54F43F53E1EA2821DABC65513E7EDAD3D999C145054FB4871065B5": {
      "chain_id": 11155111,
      "end_time": 1724934000,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000719A2E23A6573B3468153C8583CDE98929A98CC38BCFA0DAF108E1F7114B1F1C"
    },
    "0000F696A09E7114281C2922B8DED896230B689AC9636A1425C6142B575A4A981167": {
      "chain_id": 11155111,
      "end_time": 1723127580,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000317994EB4EF302BEE884E8366660733662EEAED857A19B6E8214648CA83643E8"
    },
    "000038966D4AE8643D3971DB52672612BA28E413F3F293D5499A1C4CE117A8F14919": {
      "chain_id": 11155111,
      "end_time": 1723546920,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "000041915FAC4F39A50BBA3A318578636586137D211FC6DF28C03D285F77B037E1BE"
    },
    "00006EDFBB4473AF9F4D99AB3AE853A4C7F7E08A96F214AFCC916E14C10BD2A74D6E": {
      "chain_id": 11155111,
      "end_time": 1724844240,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000E9A321335D34632759EA6A6AB0DBC52089FFDFDC5D09B56197C249C7AB7AD1DF"
    },
    "0000EFB9FBE92A7A81E3CC3B894837C94E0CE14635FBF0700231487922161DCE96B3": {
      "chain_id": 11155111,
      "end_time": 1724851920,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000ABB633B603CD7649B873177272EACBCD69580315AAEB6FB9CE1191F99775C1B4"
    },
    "0000A6D236DFE28FD331E4BF383FE6D3665CCEED812275FE0F0794F9CF13FF83C189": {
      "chain_id": 11155111,
      "end_time": 1713525180,
      "hmac_address": "000042DC9C82822D842090223D3BE8D01B0861028A98F0B1B42CEB5D6BF1EBA66F72"
    },
    "0000D760589AD04FCB3E7DD2CF758A82D271AB97F470364F77550F0338FEB7E4A36B": {
      "chain_id": 80002,
      "end_time": 1729175160,
      "evm_user_address": "0x4d102e36D7607d4e5fe8E6728B9d4e5e96632Cf8",
      "hmac_address": "00009E8D40AE627657DCE1A1F257336972B0E29DC7AD3965B7B3DE8354524EBA1B92"
    },
    "0000525965DC7715E2A8E4985EFE198C1DC4836640222BD4246282FD70BD88EA67BF": {
      "chain_id": 11155111,
      "end_time": 1723546800,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "00001D53C29D9A36224E109967A3BB3007C9008E943F315FA8DA29345666F2DC2C70"
    },
    "0000B23C467C10C74819341EC1528C34566215FB2CC8011EDFE24810033A4D049261": {
      "chain_id": 11155111,
      "end_time": 1714463580,
      "hmac_address": "0000F64A0783390BE0196AFB9BF99ACE407510C8D0B66C0C23D55E768B91A82EB7A9"
    },
    "0000CD308AA59FD25CE82488C690367ECD17E643D702DC4FC0D88FFEF80DB78F34D4": {
      "chain_id": 11155111,
      "end_time": 1723131000,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000E0DD3DFFEB74624BD5E06C0BD60B2EB2BCA3322A549A3C2AB29DBC408FA161FA"
    },
    "00006E8D97F957118EE63CFE947547C57C4067D1E62C4FFA4A5F4F71307BFA5E4612": {
      "chain_id": 11155111,
      "end_time": 1718907240,
      "hmac_address": "00009E9C2AB2B921ED67C0D6860208BB08CC7B7B17A259EC400DDAD892DD34494ECF"
    },
    "00008309EAD97DECD169C9BDB57EBCA963940500155749642EB328B75E38D59DEFF0": {
      "chain_id": 11155111,
      "end_time": 1723129020,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "00004B71DFB19ECEA71F00A721035FDC9292A1F9BF9AB213EBCCE879B7DC1A387619"
    },
    "0000D51F8A15833A264A687782A79434F38797C16A0B1F89D0C25E2AD81BDAD85B0C": {
      "chain_id": 11155111,
      "end_time": 1723117080,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000CEF6B33C7FEA02370F8BC9328EC6A0E49A49C51E89A53F5D513B2C7F92D60DC7"
    },
    "0000411BDB096F624B763FB603AFFA114D9C1F3ECDDBA8A4C8094ED8B04B5AEA61EF": {
      "chain_id": 11155111,
      "end_time": 1723634400,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "00006E2102A21512EA307255B7DF507C7FC7F2C862F5749F70624A43A174BEC85FC1"
    },
    "000042E4232975C8F89CFF93A4125F2AF68C9F889DEEDAE854693BCFE6E2D7D5C1E3": {
      "chain_id": 11155111,
      "end_time": 1723542540,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "000060999DAFEB556C112620494840B9B89927721A478B2E65D6805211399BE4CDDD"
    },
    "00007E2E52BDEC0FB247E0C3D5B88BDAEA45251C4902425E50806A4E3835EA5AE70C": {
      "chain_id": 11155111,
      "end_time": 1723543140,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "00009824E7A1BDD36B4539CC11FF6593FD7C86AAE04DD9C4A0578D04B850EE13F3D8"
    },
    "0000815CE05E07E9F66CDB2E3330FF3CC94CA8B7261EECB504EEDC592211561A9428": {
      "chain_id": 11155111,
      "end_time": 1718907360,
      "hmac_address": "0000D70460FE5E6E878CD35DD8AFFFC85C83142C18FAE3FAA33B0E5591EDC29BFE51"
    },
    "00008568D9F6396D489930F66172A41E1A19790C60FD04B4368A4E8CF15A071A536D": {
      "chain_id": 11155111,
      "end_time": 1715643120,
      "hmac_address": "0000738B439AE6DF3899565DEB87C4EF446FDF253628FB23F7829C9A519DD24212F5"
    },
    "0000436E5FBF591653A9CCF23E2145D3B45748C8D30007EACD11347042C4A04C76D6": {
      "chain_id": 11155111,
      "end_time": 1724927940,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000FF25309C03E6838B6F62880A63A448026739531EBE7C8FED507E9B741DE5C809"
    },
    "0000C4177EEAE89AA9F59CD707F6201D6560E0A8A827AD8DA9DA325F2F01F376ABA9": {
      "chain_id": 11155111,
      "end_time": 1723560060,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000DAF1C5FA7F73A7D16B287DD6ECAE6A54F961B5D2EEDC0C079B078141368DB32B"
    },
    "00007467AB6769BBDF67A71D776EE7B6CC4EDB0764FE5183E1D78A4C0F65CAEF5219": {
      "chain_id": 11155111,
      "end_time": 1718905440,
      "hmac_address": "0000A41ECC08C86EBE4A8AADAAB05A7F98513F042CDD82B530E0EC4153B78BE67258"
    },
    "000065E596C1C0229ACD9CB2C46229F23FCE89E1D19B793E4DE1755B5A68E35E162E": {
      "chain_id": 11155111,
      "end_time": 1724892960,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "00005FE01CC78FDF21CCB841BB978B9E855A17DDCE5098A38381A10517D4B3CBE637"
    },
    "00002349B831D68A25A7E6202585A9BE8128C4AD5562EEB0D69E7C41A8F82787D5C0": {
      "chain_id": 11155111,
      "end_time": 1727891640,
      "evm_user_address": "0xAD1F4dF14DC3eb4094092CF44b713067431813B8",
      "hmac_address": "0000A0DCB4942195739EA423F95C92E05F8D539599AE92C3CA4BC93566041F69983D"
    },
    "0000874980D7D6ADBB501E7F251CF051CADFA87E4B7B8E25E46F4449EE9C6A8FFABC": {
      "chain_id": 97,
      "end_time": 1729865400,
      "evm_user_address": "0x8611D81ed570379B122ea04caeF554C8D2F5379A",
      "hmac_address": "0000A7FD9742DDC107733ECFA1E9DBE2132B989DC6FDFA5EDB25954BD569C792722A"
    },
    "0000AA04DF8ED25EA7362D07D6033A47BED425BE9E2CA8B774D2B18507370ADCBA07": {
      "chain_id": 11155111,
      "end_time": 1721131080,
      "evm_user_address": "0x722B784aE402bBcD01A7DCc77696bD2f9f3555Dc",
      "hmac_address": "000043C6B51E77F4261B0CDAEA6532316C87D6F4EABEEBDAEA8D8559BB564A22001A"
    },
    "0000936A32A9049C0027C6C0F76FD490B90D324A76F4E03E2F25547942F2C36BFE9B": {
      "chain_id": 11155111,
      "end_time": 1724928000,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000C7A992412BEFDF161778411F31188C01BEC921475241C5D803FB86631C9E8E74"
    },
    "0000F9A2F70261A9B59442438ED6AE43027918B3C116EE75FABCAAD6573451C08179": {
      "chain_id": 11155111,
      "end_time": 1724892600,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "000060F912B509C2AD58DCAFE8860CE32EA60DE2CD052E0FE99395214D68AF4CBF0C"
    },
    "0000BD320557167855659769D53F2A7AABAC4C9F65C927BD6F029C1E8AF0A0C2E388": {
      "chain_id": 97,
      "end_time": 1729706820,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "00000CF5DD5BEBED517E5A99E251E2682694D1E75827CF9760B4740182D420C07D97"
    },
    "00001374CF44926A4E5E1A012EA933DD85EBC490A3F315490B30AECAB04112F92843": {
      "chain_id": 11155111,
      "end_time": 1724847660,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000BCE88B3BFCE2212353B909E1921E7EC365B6406E0D0599D425754E1DC097D49F"
    },
    "0000AD553CF6BCFE462F99A7689DA471ACCF806C66CA6D024AB457D0BF8EF4B0D7D3": {
      "chain_id": 11155111,
      "end_time": 1723120140,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000586D871ED313B36E722E57EAD37D3FBA02631F4448D787F6EFE18AD034407FD6"
    },
    "0000415F07DA3CE643E4F6A286E0054DD9AB517FC4521F6F3D0E9BBD062C79DA6B72": {
      "chain_id": 80002,
      "end_time": 1729106820,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "00007B26FE578988227B319768156E94BEE78E57BF85B1F9DCCADBDA668D1FE8FB31"
    },
    "000056A00B9A0006DD42A56D2B0FD2E7BD052D849F566746E451431D072AE7267407": {
      "chain_id": 11155111,
      "end_time": 1716108060,
      "hmac_address": "000089302A18C216E82B356C63406B1A29BBCD24C56653739B71311D31DBA08B4221"
    },
    "0000A0E85FBF033C68108187B3FB73A98E225DF987D5AF52D0CD18DEA9986596978C": {
      "chain_id": 11155111,
      "end_time": 1724927280,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "000048F25A8D249C138CDFC814F9E5CFD3D62D19AB11C2B22F8CDAF2027D5D40CBD2"
    },
    "00004C8193172BC3530CD1384D2C57EAC4335D5EE365D39F081DFE38C5D2EEBE0DBB": {
      "chain_id": 11155111,
      "end_time": 1724844120,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000B58D29789F271280E7716E43BF34242F8644B19C0F29C3B2F8E8B935F6FCB236"
    },
    "0000637A18557D9FECF7E92A4A3B9C412088C83E84EA89FE2240A695CB6ED527B13F": {
      "chain_id": 97,
      "end_time": 1729810620,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "0000AB631394036C207A9B6D89B78C27FE5E1C293C519262B6BC9E40CB12053133A6"
    },
    "0000451C78FD3CF8BA3C37B3D6BB29850A2E7BE1D6728207CE51BC20F5190C87A88F": {
      "chain_id": 11155111,
      "end_time": 1715361360,
      "hmac_address": "00008D427EB4FBB4487F20E1083D4B90EC399F6E0E9FCD47A4FC496CE79143092FBB"
    },
    "0000B0B177C343C33E5A1E2970676E00D0BDB656F06CA0AD077A9A389BA8C822B832": {
      "chain_id": 11155111,
      "end_time": 1723115700,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "000015231873FA4474A7D6528607B91228BA21630778BBC954ACA926DDED7E542F89"
    },
    "00004E791DF2D37F8A20FE211099BA430A4932A985D383ABA68CD5311D07769B1381": {
      "chain_id": 11155111,
      "end_time": 1715359500,
      "hmac_address": "0000967CE7CC0DB19036F000AE66099887484790AD667E36BC708716F1D138B4DB64"
    },
    "0000F28BFEE8112A54B7F9985F4240E2206198E51F6FB59BA73FD03F306484CBDBF9": {
      "chain_id": 11155111,
      "end_time": 1714423620,
      "hmac_address": "00008728AD0A8E457479B30BCF52D043D382E44C4440EF11AAA3D1F1B36A501FCACD"
    },
    "0000B0DAA2B9048EA449B18F19D2A7257ACA083B389038F0734E9871D35B4E4337BF": {
      "chain_id": 11155111,
      "end_time": 1713525660,
      "hmac_address": "00004F744BC51FFA3830F8C1C89222CC7A633F596666E507713CD3652705FE9B4B1E"
    },
    "0000BDDBCD3DAA726FA33BB2213D8A4970F87E0708D66FF5CBBED3A88C42A3A9DF2D": {
      "chain_id": 11155111,
      "end_time": 1724853900,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "0000F90E0B2D4674CC189AEE0243994B653ED7BAAB2DE223241AD08804C8AECC22DA"
    },
    "0000A6F6530F1D7DA3BB64684E0976B7E2EE5092D25E27CAA6D19E5C71C84A43576F": {
      "chain_id": 80002,
      "end_time": 1727464200,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "000034AADE65C9ACC0D84E534B0F85346CDD2B0EE3AD91F05368AE7D931824227DB8"
    },
    "00009B558CCAF5AE769F7F206BC84795BBF7852EA8A0B5947EF3B99FA9B753B8E567": {
      "chain_id": 11155111,
      "end_time": 1723119360,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "000005F7FE0E3DE848161162B9C1C49084644036E49642C546E60D7498F4DEB7CDE5"
    },
    "0000ABBC1EFE23CAB2EEDC99F720AEF476B5224B9531416E64640F7A4530983D28B6": {
      "chain_id": 97,
      "end_time": 1729806000,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "00003F917DC3EBFBB9B87192FA98D2994018F1B54B8F0891BC4F3D1B84DD4F5F7C3E"
    },
    "000031E38ABBF638F02610007AFDDD6FB954F7DC93241D1A87FEB0FD4FF6C093034E": {
      "chain_id": 11155111,
      "end_time": 1722350700,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "00001A34E0FDEEB82FDD5FD26477F86A88307CE5C4F9345ECEB491C52686105B7B9C"
    },
    "00005903D3F1C1507C58AE7DF0BC67529096FB160B5238B1280323519BD4212B84BD": {
      "chain_id": 80002,
      "end_time": 1730301720,
      "evm_user_address": "0xB476bF84BE229F0eB0Ef94402eB265Ee2C4Dffe2",
      "hmac_address": "0000FCE2566A60977475FA77A2A6AF30CDA4B2C3DFC584C2B8D0AA4944A303D31DA7"
    },
    "0000179053735B258D426933310465580ADA46DC97145FF34C0830F18242639270D2": {
      "chain_id": 11155111,
      "end_time": 1723128840,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000155F6A0F5706F81AAFC90D8C876C9F412EDB202B57A623212DDCB7303CA1B7D1"
    },
    "00008926A3F50817B45F0C131CD7B00E2597EBB5C2A9A2CD08F4BEC9BA637956BE9D": {
      "chain_id": 80002,
      "end_time": 1729807560,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "0000EB979564C25C9BFB8596086DADB08B46055D19AE2B6BAB7F29A396738A8CD611"
    },
    "00005B239C2A7498A59E16015E9121D8670A6B78CAEAE0958E138EBACCAD50EA9578": {
      "chain_id": 11155111,
      "end_time": 1724852460,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "00004DFC5560327F45D021AA74324D438B42327AB849480F020E85B4DC5603B41C38"
    },
    "0000330622F65CDE0A06A7525D23C60A802794F96A9CDD98021DE5146D1048A9C32A": {
      "chain_id": 11155111,
      "end_time": 1716109680,
      "hmac_address": "0000506A7333703BC0E47076FC32816AA8FE5001B9AD115F2A0971DA03A75B4B65CE"
    },
    "00004198C95F2280D14CC0E0909C6CA2E4289B7B00C7C9608DD2ED919E7BB7D26512": {
      "chain_id": 97,
      "end_time": 1730978580,
      "evm_user_address": "0xAD1F4dF14DC3eb4094092CF44b713067431813B8",
      "hmac_address": "00005BE73725449881F8020C76919C10707C101C27A3D2992266DFC8C8AAD8FDA892"
    },
    "00005334C7C735A983645401841A1B9980ED47C6E41F00D91AF814BCCFDC60D13ACF": {
      "chain_id": 11155111,
      "end_time": 1723545480,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000D5A0F50E41E0E6D0C21BEC57921F73509E90CD4B7406525562A43CD1FD94E541"
    },
    "00002E5CC40387A7EEB3D81C939D664BBCF1F3B500E9D143868874799342AFBF5CDA": {
      "chain_id": 11155111,
      "end_time": 1723559400,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000BDB9A60C7A95326DC36E3D69A2975E4DAEA78B54444D371E6587B1F1C280B68F"
    },
    "0000C5062DE574FDD9AA4953524AFCF7A05469623FDC5C09C7100EC866DD45342854": {
      "chain_id": 11155111,
      "end_time": 1723116300,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000BE9C232AF045D54EC031FCD9BB165CBBA9A1172A785824E2E7BDBD8EAA371613"
    },
    "00003241056177ED840E5D0C187E4EAA4EC034F9F0123942B03B3C11687B9A408EB6": {
      "chain_id": 11155111,
      "end_time": 1713636660,
      "hmac_address": "0000F16287A99DF06052FC3DDD256B502AB078B9FD3B18E5E8F658883B286E6D8F41"
    },
    "0000FF66E746E06A55883358C341CDACA1B30674988BFE61243C60DBD5D0179CCE8C": {
      "chain_id": 11155111,
      "end_time": 1716298740,
      "hmac_address": "0000C89A8972B4D143F45AC29666AC00EFA4BE189B997B49BCD0C441B33089F1C8DC"
    },
    "000085CD2935E3024582578DF4AF4E3E767AA2A5FA259EA361CCA1AD5CB756D0A8F0": {
      "chain_id": 11155111,
      "end_time": 1715725020,
      "hmac_address": "00001793FC47A8BB8FD02AFFD697330CD5A7295297B0E9BB70A5E1E42AB54DBF6D49"
    },
    "0000D852EB4C5860B42ED6C6907F384EE80AEFA7DE8DA4D31F3729B90F379BAFBD5C": {
      "chain_id": 11155111,
      "end_time": 1724856060,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "0000B8BF9325C6194FCC0173B14F2C1B1872EB554114E5C287DE0ED2D4003D4E1009"
    },
    "00009061DAEF94E3626888B504E40AADC5BF94B57E09B71E48DAF6F84FB1CC85418E": {
      "chain_id": 11155111,
      "end_time": 1724844300,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000BB19F2669B7EE80B3D594CF364B284832A79DB101BF0F798770E0113F87EE7C6"
    },
    "0000FD195BD14CA030B8FF8DDCE5CAF6850EBAF9C84C7D2F3A2B67B9D0FD4597620A": {
      "chain_id": 11155111,
      "end_time": 1724846880,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "000061265E8A4DADB1C6227D4F10665948C77445673F6459929950271F2EC1092E13"
    },
    "0000347E7792E6122D1B9DE4CA689093EF2E2FE9C498DB94CAFB89EDB06C1F83224F": {
      "chain_id": 11155111,
      "end_time": 1724847960,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "000043EDD5B25108B36595FAD7453086C596F976CFF43778C87AFBFD4A8B21BA3001"
    },
    "0000F93EB4CB03973A6B85BD1A6C82284D1A99E407C7429A63EF27508B857F9B2E9B": {
      "chain_id": 97,
      "end_time": 1727870280,
      "evm_user_address": "0xAD1F4dF14DC3eb4094092CF44b713067431813B8",
      "hmac_address": "000064CBC6C4E45497CAB25684A069506E7C3EEA55DC24B9F9492FEF01CDE2C69F86"
    },
    "0000C7B08F8E04B4EAAC292C4B3545EB6EEC810F15AB616E9E3F5B8002739220B8E8": {
      "chain_id": 11155111,
      "end_time": 1716195300,
      "hmac_address": "0000118CD79C367C4629832E0440135C8CC27F184C6524BE0453D2CFAFB64BD26FB7"
    },
    "0000A4A412AA9A78743647FC63AE48FA27271A6D2B87661553CEA14FAC8BD0F37ED0": {
      "chain_id": 97,
      "end_time": 1726510500,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "0000F24A0657ADD1D31D550AFD0876CE320FCC53C2B285F6629A0C9BDC0824728560"
    },
    "0000A724047913D3404230C90AB5372059B98595E7C4781D484DB6499EE84F57A8CF": {
      "chain_id": 11155111,
      "end_time": 1727892000,
      "evm_user_address": "0xAD1F4dF14DC3eb4094092CF44b713067431813B8",
      "hmac_address": "0000A9C8861A9238A92A05E5A9AFC9E10E5626239E1189CA3A0B2FADC03D86D99E29"
    },
    "00000E11760920EC492F80B6389C1BB9CA7668C234C2290999C827F912676C7790B0": {
      "chain_id": 11155111,
      "end_time": 1713519900,
      "hmac_address": "0000F0DBFD7B8992E9605A1C5591CF0BE9FDAB197F39FD58E52EECDA10DC23FA7D91"
    },
    "0000627DE2ACE6B4D836769F05CCC0E9FB25278611D56DAAADF3E59C1AE36022AB25": {
      "chain_id": 11155111,
      "end_time": 1722517800,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "00004F8BCA62F32ABE70EF517D9BF6C834B968F4DE154AB719EBF5B54D65E355C4A3"
    },
    "00006A8B3D631B7E69D62AAAFB3D340C9D4B3E3D44948847F21B8F86856E709640A3": {
      "chain_id": 11155111,
      "end_time": 1713630780,
      "hmac_address": "0000C173BA6140150EDEB3EDE165D2E1CDDF6F646E4B050194BE909D942C1B7D3A5C"
    },
    "0000B4D7BB5E415147E65F4EC7B3055A52B3A7EF1C307D3DADF921F9420087F4B237": {
      "chain_id": 11155111,
      "end_time": 1717578780,
      "hmac_address": "00006002E298A35C4380A45A1DC7E2390F6C118038119D7DB29AC1A98160D2109BE8"
    },
    "00001DB7BF57ED6F4F10BF577CA6AE04F9DE98DE9F2112E278315E8879BC7C4B3F1E": {
      "chain_id": 11155111,
      "end_time": 1713525780,
      "hmac_address": "0000758E69DE9E6233E87691262265A6BD755095CD4BD7AC76B2DBA5BAEB92B1AB3E"
    },
    "00008D22D62EA50448F131DA06B775E19C773514AD8013CD17934AEC343DB52FB6A7": {
      "chain_id": 11155111,
      "end_time": 1715723400,
      "hmac_address": "0000036FE3205610C7AC67E4647417E6873254D457A29DCF4FA3BC34CA47BA992775"
    },
    "0000D1A5989F390EC49FD6EB445FA9CC60BB89A237461B92A7CB9602E8771E644A72": {
      "chain_id": 11155111,
      "end_time": 1723130880,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000B12FCFFA3D353D2A70C31B0ED525AEC972E5E1EFF2494CDEA3713CB9313D63CF"
    },
    "0000E081FAC7DF60775A82E7EACF0AF28AF2BC41D87F04A3BCC5924376EE156690C2": {
      "chain_id": 11155111,
      "end_time": 1727892480,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "00004DB426F23D655D7E5CBD7403CC44C471462A6655F26A1EF101AB1FA298CE54CB"
    },
    "0000611E883CE2DDFD32942B627A867CB1234AC0A1D52035CA074BC5991D6EE91A47": {
      "chain_id": 80002,
      "end_time": 1727462100,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000250DEE3E5CF09700687701674EF5EA654BE425A264C73965A7EBA2B753FA2BC3"
    },
    "0000F17BDA7847C26EF49DF7F91EA7A6B9018DFD14DF71F302B78859DB7F7EE755D2": {
      "chain_id": 11155111,
      "end_time": 1724939940,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "00000EDA1452086CFBF714BACCDB9920148E5A196D23EC0338A3728C7E0B5B88529A"
    },
    "00004087AED26D1DCB4969891484F7E54E560BBF9BA00AB3CE9246C03267F6597F42": {
      "chain_id": 11155111,
      "end_time": 1724844420,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000D2C782D55D6E7CC11E5E51235102CBE6AD4370650D9364E2CB87EC6F206B491A"
    },
    "0000F29BE8BD7B92F60C3B682C304CF4E6CE891B37CE57A7C10ADF1809D64176C3E9": {
      "chain_id": 11155111,
      "end_time": 1727977500,
      "evm_user_address": "0xB476bF84BE229F0eB0Ef94402eB265Ee2C4Dffe2",
      "hmac_address": "00004D71E0A0CB44232920A9A6AE8D8D64988306619780C8781019F8263F87B0781B"
    },
    "00002A1D8C221EC383831D5C319394E1AF63AFB5A297D60C163B4FE6784671F033D0": {
      "chain_id": 11155111,
      "end_time": 1724918580,
      "evm_user_address": "0x7f0f44c4edfbb7c54501547009d32a2bc788be79",
      "hmac_address": "000056F1830C6A56E4D1D8127585C554339A82EBE85429598DCE3ECA48D1C66EE0F5"
    },
    "0000AEEA0554D8F8BCF00621470C0361EEBA189226331FA8FD9E0EBF4B8DDFEC6CE1": {
      "chain_id": 11155111,
      "end_time": 1724852400,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "00001AB0919D1A0D1F183338D8A224A911291D50077DC43233D72D5F64FA701EE287"
    },
    "0000CB00C099B714F91C707E4EF3861CF3BFB595410289952ED88C7402955C2ACA4F": {
      "chain_id": 97,
      "end_time": 1729867800,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "0000F2C30707D8EA3F1580A316ED3074839A1F04E99DDEA59F9839C401919F0172A8"
    },
    "0000DFA642781645CC5C807195F361674273A1AAC1E211522507C13060FAA90F4BD0": {
      "chain_id": 11155111,
      "end_time": 1723546620,
      "evm_user_address": "0xad1f4df14dc3eb4094092cf44b713067431813b8",
      "hmac_address": "0000D82FEDD725B05BB5924502DABFF1D42BA807DF647E9E55C5291F8D3506318869"
    },
    "0000D8EAFB15488CCF8C0BFF5364B9CB151BB83537E6AD47C4185605D36EA7764B88": {
      "chain_id": 80002,
      "end_time": 1730301960,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "00000C3499961762889B31F6603EDA6214FDFCBEB6EEBA6BA60BA6E753533D587E21"
    },
    "0000C503CD48B3B79DF529F62CBC7BB4805F67788C2DDBE128D63C50EC9FE240FE1D": {
      "chain_id": 97,
      "end_time": 1726514340,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "00007A0F3C6A1AE92E929C498301AC249F7BE1391A27F17CF8C8E24D70A5A271065E"
    },
    "000082CF43AE9CE4B305CB6ADF343797736CF5C7602CF11BBD446D82A755A3803D75": {
      "chain_id": 97,
      "end_time": 1729809660,
      "evm_user_address": "0x5ACBB4e6AacD711594DF7789c8dc3660B020DFDD",
      "hmac_address": "00001748ECC865E270B61BEFB0582286C1958BBDB5842A062B23C9F1EF08EBE4496C"
    },
    "0000A6F01463CE89E061601CC1CA309D43847E449B01FA83D65FF98B2E229CDA9E5F": {
      "chain_id": 97,
      "end_time": 1729810500,
      "evm_user_address": "0xccbe79Dc320a924a851CC58DF19b2dC97c2ae692",
      "hmac_address": "000088FFCF16F24DFFCC10477EC39A414CC003214F2F0518BA935285C3F8F161106D"
    },
    "00000FF43A538880EA38BC8E614A9071FA71E9A33B10B578775E3EF66E7F3633A6C0": {
      "chain_id": 80002,
      "end_time": 1729119720,
      "evm_user_address": "0x7F0F44C4EDfBB7c54501547009d32A2BC788BE79",
      "hmac_address": "000098A2264403E675E9C84BD1B3BC04E2330FC3891A9BAD7A3D313E3AB6F192AC5E"
    },
    "00005878D6F1BF948F01E585315965D7597DFAB59175F28E47032C228367E0D69B01": {
      "chain_id": 11155111,
      "end_time": 1723650300,
      "evm_user_address": "0xccbe79dc320a924a851cc58df19b2dc97c2ae692",
      "hmac_address": "0000CAB55A17464BB9B683D45238894EB712654AD01EA94EA1A685006D3E70751623"
    }
  }
}
                  
Movements (0)

Ownerships (1)

  • Secret shared with 1 key

    Encoded secret

    593D0E16A27DA1A6445B8601E3044D0F544E52B651FBE7C54E9A527AFF971AB2484ED10B10C4A56A6F40252971C6B245D8673EF40F8AB163541CFF3E

    Authorized keys

    • 00017877BCF4122095926A49489009649603AB129822A19EF9D573B8FD714911ED7F

Contract recipients (1)

Inputs (0)

Contract inputs (0)

Unspent outputs (0)

Proofs and signatures

Previous public key

000179CDED734842FCF90909FD11AE07E7D27CCAD454613E0C0452708438A86B5532

Previous signature

FF3F8D97499D8C67D6AD6022E9D5A35D9EB89044D4841F87D69BDA39744F412979809AC038032D8BF29E9B2DDA48115D8D814E551CCB3E9FB2E64DC2AE885302

Origin signature

3045022034C10EC663F7E43430966C2FE13EC1309B32EBF777A4593BD85FCBBB4F57EE96022100ED79F5455EF4108F4E7763E1D11D2E9F37614642F7598DA987BCD94EB087B88B

Proof of work

010104228ED9FE757FA46CEDCAE4E3FDDEC1EF6511A71B15E5611AA36EA41DFB969EF2FB83D72D13AD1E89873CD4EFF1364880B3557D72AE5188EF5E1BD09253CE235A

Proof of integrity

004F7D691F593CFD221CA72816EC02833ABFAC521B8D022C43E583C452653041FE

Coordinator signature

CB437F716AC1061379DFD534C652BE59F54BCC2326916A681465AD147CF5FFD536C07CB8181347CA9BB21A2D1DBF96AC255A03C4B9366F92CCC5464EACC2E604

Validator #1 public key

00013D16BDF02C72DB6831A1EB14200C6D5427B4303351645BDFFC9B132DFE3A53FC

Validator #1 signature

7C18780CC1E8789CE53D8392CE9F987E57882D9ACA14DFEBCAA482E6E883EFDCF86694F571FEA5232C991C4F4E308E15134C72E0F7418D422B888C2EC63C6001

Validator #2 public key

0001A5E6F6D02CE7E311CF3CC87C79329877BC7E086C52A92FDED417D6F7D43F13C5

Validator #2 signature

12C89F77F77801D55CCF20EB69F3468B748C62D7AA212C393338CFB257E5FD9BED18A47FA645EDD4C01FBADC883A426C21A743A986A21E55EB7170DC1BA1100F