API de Escaneamento XFI
- xfiscan — para rede mainnet
- test.xfiscan — para rede testnet
Cabeçalhos
Nome | Valor |
---|---|
Tipo de Conteúdo | application/json |
Autorização | Bearer <token> |
Corpo
Nome | Tipo | Descrição |
---|---|---|
name | string | Nome do usuário |
age | número | Idade do usuário |
Resposta
- 200
- 400
{
"id": 1,
"name": "John",
"age": 30
}
{
"error": "Requisição inválida"
}
txs - Consultas para transações
GET /api/1.0/txs
Recuperando uma lista de transações.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
from_height | string | Número de bloco de. |
to_height | string | Número de bloco para. |
address | string | Endereço da conta. |
addresses | array[string] | Array de endereços de contas. |
txhash | string | Hash de transação. |
txhashes | array[string] | Array de hashes de transação. |
height | string | Altura do bloco. |
existsEVM | boolean | True - apenas transações de parte EVM, false - apenas transações de parte Cosmos. |
messageType | string | Tipo de mensagem de transação. |
page | número | Número da Página. |
limit | número | O número de entidades a serem entregues. |
sort | string | O campo de classificação aceita valores com ou sem o prefixo "-" (menos) que indica o decrescente ou crescente do campo especificado. Exemplo: '-altura' é decrescente, 'altura' é crescente. |
Resposta de Exemplo
{
"docs": [
{
"txhash": "8a31d98d252be6dbec82fabc9b57a592e66e15bb70ea856bcf6f30c08e349e9a",
"addresses": [
"0x9449078b371ff30a90ec36fe6191f164cd527d64",
"mx1j3ys0zehrles4y8vxmlxry03vnx4yltyg2alsv"
],
"auth_info": {
"signer_infos": [],
"fee": {
"amount": [
{
"denom": "xfi",
"amount": "252031500000000000"
}
],
"gas_limit": "21000",
"payer": "",
"granter": ""
}
},
"body": {
"messages": [
{
"data": {
"chain_id": "4156",
"nonce": "10",
"gas_tip_cap": "1500000000",
"gas_fee_cap": "12001500000000",
"gas": "21000",
"to": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"value": "1000000000000000000",
"data": null,
"accesses": [],
"v": "0",
"r": "0x4b5b357aace26ec5f9ec1d402dcb9d77fe3adeba58535624c3cecee03c96c425",
"s": "0x05fde619bcb77662af9f1248c4435f6e4386c3bf9c60c1efae43429d61b9a96e",
"@type": "/ethermint.evm.v1.DynamicFeeTx",
"from": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"base_fee_per_gas": "10000000000000"
},
"size": 0,
"hash": "0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b",
"from": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"@type": "/ethermint.evm.v1.MsgEthereumTx"
}
],
"memo": "",
"timeout_height": "0",
"extension_options": [
{
"@type": "/ethermint.evm.v1.ExtensionOptionsEthereumTx"
}
],
"non_critical_extension_options": []
},
"code": 0,
"codespace": "",
"evm_txhashes": [
"0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b"
],
"gas_used": "21000",
"gas_wanted": "21000",
"height": 30,
"info": "",
"isEVM": true,
"logs": [
{
"msg_index": 0,
"events": [
{
"type": "ethereum_tx",
"attributes": [
{
"key": "amount",
"value": "1000000000000000000"
},
{
"key": "ethereumTxHash",
"value": "0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b"
},
{
"key": "txIndex",
"value": "0"
},
{
"key": "txGasUsed",
"value": "21000"
},
{
"key": "txHash",
"value": "8A31D98D252BE6DBEC82FABC9B57A592E66E15BB70EA856BCF6F30C08E349E9A"
},
{
"key": "recipient",
"value": "0x9449078b371FF30A90EC36Fe6191F164Cd527D64"
}
]
},
{
"type": "message",
"attributes": [
{
"key": "action",
"value": "/ethermint.evm.v1.MsgEthereumTx"
},
{
"key": "module",
"value": "evm"
},
{
"key": "sender",
"value": "0x9449078b371FF30A90EC36Fe6191F164Cd527D64"
},
{
"key": "txType",
"value": "2"
}
]
},
{
"type": "tx_log",
"attributes": null
}
]
}
],
"signatures": [],
"timestamp": "2023-08-10T06:05:35.448Z",
"xds": []
}
],
"hasNext": true,
"limit": 1,
"page": 1
}
GET /api/1.0/txs/
Obtendo o hash da transação.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
hash | string | Hash de transação. Campo obrigatório. |
Resposta de Exemplo
{
"txhash": "8a31d98d252be6dbec82fabc9b57a592e66e15bb70ea856bcf6f30c08e349e9a",
"addresses": [
"0x9449078b371ff30a90ec36fe6191f164cd527d64",
"mx1j3ys0zehrles4y8vxmlxry03vnx4yltyg2alsv"
],
"auth_info": {
"signer_infos": [],
"fee": {
"amount": [
{
"denom": "xfi",
"amount": "252031500000000000"
}
],
"gas_limit": "21000",
"payer": "",
"granter": ""
}
},
"body": {
"messages": [
{
"data": {
"chain_id": "4156",
"nonce": "10",
"gas_tip_cap": "1500000000",
"gas_fee_cap": "12001500000000",
"gas": "21000",
"to": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"value": "1000000000000000000",
"data": null,
"accesses": [],
"v": "0",
"r": "0x4b5b357aace26ec5f9ec1d402dcb9d77fe3adeba58535624c3cecee03c96c425",
"s": "0x05fde619bcb77662af9f1248c4435f6e4386c3bf9c60c1efae43429d61b9a96e",
"@type": "/ethermint.evm.v1.DynamicFeeTx",
"from": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"base_fee_per_gas": "10000000000000"
},
"size": 0,
"hash": "0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b",
"from": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"@type": "/ethermint.evm.v1.MsgEthereumTx"
}
],
"memo": "",
"timeout_height": "0",
"extension_options": [
{
"@type": "/ethermint.evm.v1.ExtensionOptionsEthereumTx"
}
],
"non_critical_extension_options": []
},
"code": 0,
"codespace": "",
"evm_txhashes": [
"0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b"
],
"gas_used": "21000",
"gas_wanted": "21000",
"height": 30,
"info": "",
"isEVM": true,
"logs": [
{
"msg_index": 0,
"events": [
{
"type": "ethereum_tx",
"attributes": [
{
"key": "amount",
"value": "1000000000000000000"
},
{
"key": "ethereumTxHash",
"value": "0xd18df3e4684b3f4b0904b1c05391602faf14aa68e318ac1509c5d1d25ad05b7b"
},
{
"key": "txIndex",
"value": "0"
},
{
"key": "txGasUsed",
"value": "21000"
},
{
"key": "txHash",
"value": "8A31D98D252BE6DBEC82FABC9B57A592E66E15BB70EA856BCF6F30C08E349E9A"
},
{
"key": "recipient",
"value": "0x9449078b371FF30A90EC36Fe6191F164Cd527D64"
}
]
},
{
"type": "message",
"attributes": [
{
"key": "action",
"value": "/ethermint.evm.v1.MsgEthereumTx"
},
{
"key": "module",
"value": "evm"
},
{
"key": "sender",
"value": "0x9449078b371FF30A90EC36Fe6191F164Cd527D64"
},
{
"key": "txType",
"value": "2"
}
]
},
{
"type": "tx_log",
"attributes": null
}
]
}
],
"signatures": [],
"timestamp": "2023-08-10T06:05:35.448Z",
"xds": []
}
blocos - consulta para blocos
GET /api/1.0/blocks
Obtendo uma lista de blocos.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
altura | string | Altura do Bloco. |
de_altura | string | Número do bloco de. |
para_altura | string | Número do bloco para. |
página | número | Número da Página. |
limite | número | O número de entidades a serem entregues. |
classificar | string | O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), este indica o aumento ou diminuição do campo especificado. Exemplo: "-height" é decrescente, "height" é crescente. |
Resposta de Exemplro
{
"docs": [
{
"block_hash": "9ef8bf42d1916b7617955ddce3da8e31c61ca1830d27e6ef718c2ee5f22d4059",
"app_hash": "8b651dcde4f67a1eada92185c8b5a3dd450369505f4e9d4df2059c8940c2f62c",
"block_size": "714",
"chain_id": "mineplex-testnet-2-5",
"consensus_hash": "16dbfd0aaa36e214d4e55a6eaadf68e9802dd4845dbd49eb58daa89f885d1fc0",
"data_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evidence_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evm": {
"baseFeePerGas": "500000000000",
"difficulty": "0",
"extraData": "0x",
"gasLimit": "20000000",
"gasUsed": "0",
"hash": "0x9ef8bf42d1916b7617955ddce3da8e31c61ca1830d27e6ef718c2ee5f22d4059",
"miner": "0x9b98f8601013ee11b88dd202c954965c59e12e65",
"nonce": "0x0000000000000000",
"number": "8241762",
"parentHash": "0x8d07a38af8b799c4f3e972fb44a1b76244e409e4811bd2a8032cced1d5549d26",
"transactions": []
},
"height": 8241762,
"last_block_hash": "8d07a38af8b799c4f3e972fb44a1b76244e409e4811bd2a8032cced1d5549d26",
"last_commit_hash": "f5352ae0162f664b3ad7b9872174bc363fa6dc60d66a03d5454afe5dc7787662",
"last_results_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"next_validators_hash": "baac843746eabd58fff69cabccee6836d3c1259cc815c08533fba272842e7cfb",
"proposer": {
"address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"description": {
"moniker": "validator1",
"identity": "",
"website": "",
"security_contact": "",
"details": ""
}
},
"sigs": [
{
"address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"signed": true
},
{
"address": "mxvaloper17u9dufjvscqh56u4kd7ag236u0wu3zrw9e8fwc",
"signed": false
}
],
"timestamp": "2025-01-31T13:20:32.370Z",
"txs": [],
"validators_hash": "baac843746eabd58fff69cabccee6836d3c1259cc815c08533fba272842e7cfb",
"version": {
"block": "11"
}
}
],
"hasNext": true,
"limit": 1,
"page": 1
}
GET /api/1.0/blocks/latest
Recebendo o bloco confirmado atual.
Parâmetros
Nenhum
Resposta de Exemplo
{
"block_hash": "5e5fe4888e1d76bdb00c5d7097ed552d39676ba2d89abb17d777ce07dcbe081e",
"app_hash": "ad11a1a3261fafceff29decd2702065e42d6bea97d7f10d2120cbe4297b0bb92",
"block_size": "712",
"chain_id": "mineplex-testnet-2-5",
"consensus_hash": "16dbfd0aaa36e214d4e55a6eaadf68e9802dd4845dbd49eb58daa89f885d1fc0",
"data_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evidence_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evm": {
"baseFeePerGas": "500000000000",
"difficulty": "0",
"extraData": "0x",
"gasLimit": "20000000",
"gasUsed": "0",
"hash": "0x5e5fe4888e1d76bdb00c5d7097ed552d39676ba2d89abb17d777ce07dcbe081e",
"miner": "0x9b98f8601013ee11b88dd202c954965c59e12e65",
"nonce": "0x0000000000000000",
"number": "8242223",
"parentHash": "0x70af1a8df04ab529a97f47b1d892ff0a08839ecdbf77890255800f26b655b903",
"transactions": []
},
"height": 8242223,
"last_block_hash": "70af1a8df04ab529a97f47b1d892ff0a08839ecdbf77890255800f26b655b903",
"last_commit_hash": "3884227c2ed9983c56bb2f0ce15d3228423ed363ec790c8737c6f00cc1ca415c",
"last_results_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"next_validators_hash": "baac843746eabd58fff69cabccee6836d3c1259cc815c08533fba272842e7cfb",
"proposer": {
"address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"description": {
"moniker": "validator1",
"identity": "",
"website": "",
"security_contact": "",
"details": ""
}
},
"sigs": [
{
"address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"signed": true
},
{
"address": "mxvaloper17u9dufjvscqh56u4kd7ag236u0wu3zrw9e8fwc",
"signed": false
}
],
"timestamp": "2025-01-31T14:00:03.220Z",
"txs": [],
"validators_hash": "baac843746eabd58fff69cabccee6836d3c1259cc815c08533fba272842e7cfb",
"version": {
"block": "11"
}
}
Obtendo um bloco específico.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
height | string | Altura do bloco. Campo obrigatório. |
Resposta de Exemplo
{
"block_hash": "98e7e6441ce004842396f5869b4d34fa2a43a2fc51810e791e632ec86798ba5b",
"app_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"block_size": "347",
"chain_id": "mineplex-testnet-2-5",
"consensus_hash": "16dbfd0aaa36e214d4e55a6eaadf68e9802dd4845dbd49eb58daa89f885d1fc0",
"data_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evidence_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"evm": {
"baseFeePerGas": "10000000000000",
"difficulty": "0",
"extraData": "0x",
"gasLimit": "20000000",
"gasUsed": "0",
"hash": "0x98e7e6441ce004842396f5869b4d34fa2a43a2fc51810e791e632ec86798ba5b",
"miner": "0xb6aba457a6bc2e53119fb442903fa018e0496800",
"nonce": "0x0000000000000000",
"number": "1",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"transactions": []
},
"height": 1,
"last_block_hash": "",
"last_commit_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"last_results_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"next_validators_hash": "4238f8531482f5edc3d6641d8180957815e2ed4af8869d826d09f7b214ac92d9",
"proposer": {
"address": "mxvaloper1k646g4axhsh9xyvlk3pfq0aqrrsyj6qqj85d5m",
"description": {
"moniker": "validator3",
"identity": "",
"website": "",
"security_contact": "",
"details": ""
}
},
"sigs": [
{
"address": "mxvaloper17qj66wq56dmh7zpurj966kdzks9dnfmhv26s92",
"signed": true
},
{
"address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"signed": true
},
{
"address": "mxvaloper1k646g4axhsh9xyvlk3pfq0aqrrsyj6qqj85d5m",
"signed": true
},
{
"address": "mxvaloper17u9dufjvscqh56u4kd7ag236u0wu3zrw9e8fwc",
"signed": true
}
],
"timestamp": "2023-03-15T00:00:00.000Z",
"txs": [],
"validators_hash": "4238f8531482f5edc3d6641d8180957815e2ed4af8869d826d09f7b214ac92d9",
"version": {
"block": "11"
}
}
endereços - Consultas para endereços de contas
GET /api/1.0/addresses
Recuperar uma lista de endereços de contas.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | string | Endereço de Conta. |
endereçoValidador | string | Endereço do Validador. |
endereços | array [string] | Array de endereços de contas. |
númeroBloco | string | Número do Bloco. |
página | número | Número da Página. |
limite | número | O número de entidades para disponibilizar. |
ordem | string |
O campo de ordenação aceita valores com ou sem o prefixo "-" (menos) que indica o aumento ou diminuição do campo especificado Exemplo: "-height" é decrescente, "height" é crescente.
Resposta de Exemplo
{
"docs": [
{
"mx": "mx1j3ys0zehrles4y8vxmlxry03vnx4yltyg2alsv",
"blockNumber": 1711526,
"coins": [
{
"denom": "xfi",
"amount": "951704940132136241914269"
}
],
"delegations": [],
"evm": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"holdCoins": {
"xfi": "951704940132136241914269"
},
"isValidator": false,
"number": "90",
"redelegations": [],
"sequence": "1044",
"timestamp": "2023-11-30T06:39:44.316Z",
"unbonding_delegations": []
}
],
"hasNext": true,
"limit": 1,
"page": 1
}
GET /api/1.0/addresses/
Obter endereço pelo hash do endereço da conta.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | string |
Endereço de Conta Campo obrigatório. | | semRecompensas | booleano | Prêmios onde não são necessários. |
Resposta de Exemplo
{
"mx": "mx1j3ys0zehrles4y8vxmlxry03vnx4yltyg2alsv",
"blockNumber": 1711526,
"coins": [
{
"denom": "xfi",
"amount": "951704940132136241914269"
}
],
"delegations": [],
"evm": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"holdCoins": {
"xfi": "951704940132136241914269"
},
"isValidator": false,
"number": "90",
"redelegations": [],
"sequence": "1044",
"timestamp": "2023-11-30T06:39:44.316Z",
"unbonding_delegations": [],
"rewards": {
"rewards": [],
"total": []
}
}
GET /api/1.0/addresses/rich-list/
Obtendo uma lista de endereços pelo número de tokens comprados.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
tipo | string | Tipo de Token (MPX ou XFI). Campo obrigatório. |
Resposta de Exemplo
{
"docs": [
{
"mx": "mx1f83rnk6s2kqcdl0knp8dj6p5s9u5km925spepg",
"blockNumber": 0,
"coins": [
{
"denom": "mpx",
"amount": "77605105225994146032010823"
},
{
"denom": "xfi",
"amount": "635906491456039568577746"
}
],
"delegations": [
{
"delegation": {
"delegator_address": "mx1f83rnk6s2kqcdl0knp8dj6p5s9u5km925spepg",
"validator_address": "mxvaloper1f83rnk6s2kqcdl0knp8dj6p5s9u5km92qmc8qh",
"shares": "999999999999999999999999.000000000000000000"
},
"balance": {
"denom": "mpx",
"amount": "990000004052981946152236"
}
},
{
"delegation": {
"delegator_address": "mx1f83rnk6s2kqcdl0knp8dj6p5s9u5km925spepg",
"validator_address": "mxvaloper1nwv0scqsz0hprwyd6gpvj4ykt3v7ztn97kjwc5",
"shares": "1.000000000000000000"
},
"balance": {
"denom": "mpx",
"amount": "1"
}
}
],
"evm": "0x49e239db50558186fdf6984ed9683481794b6caa",
"holdCoins": {
"xfi": "635906491456039568577746",
"mpx": "78595105230047127978163060"
},
"isValidator": false,
"number": "5",
"redelegations": [],
"sequence": "3",
"timestamp": "2024-10-06T13:39:56.390Z",
"unbonding_delegations": []
}
],
"hasNext": true,
"limit": 1,
"page": 1
}
validadors - Consultas para validadores.
GET /api/1.0/validators
Obter uma lista de validadores.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
validatorJailed | booleano | Se o campo validatorJailed for verdadeiro, significa que o validador está bloqueado e temporariamente não pode participar do processo de validação e receber recompensas. |
validatorStatuses | string | O campo filtra os validadores pelo status atual. |
ninAddresses | array [string] | A lista enviada ninAddresses da ameaça da busca. |
endereço | string | Endereço da conta. |
endereços | array [string] | Array de endereços da conta. |
página | número | Número da página. |
limite | número | O número de entidades a oferecer. |
ordenar | string |
O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), que indica a diminuição ou aumento do campo especificado. Exemplo: '-altura' é decrescente, 'altura' é crescente.
Resposta de Exemplo
{
"docs": [
{
"validator": {
"operator_address": "mxvaloper1f83rnk6s2kqcdl0knp8dj6p5s9u5km92qmc8qh",
"consensus_pubkey": {
"@type": "/cosmos.crypto.ed25519.PubKey",
"key": "4xr65XxFRDaSxDZeoOKUaA2ct5P0FOdFRo7aFrEwuA4="
},
"jailed": true,
"status": "BOND_STATUS_UNBONDED",
"tokens": "990198998156041678366202",
"delegator_shares": "1000201004143681884897493.256170380531418749",
"description": {
"moniker": "validator6",
"identity": "",
"website": "",
"security_contact": "",
"details": ""
},
"unbonding_height": "0",
"unbonding_time": "2023-05-29T09:38:56.327294001Z",
"commission": {
"commission_rates": {
"rate": "0.100000000000000000",
"max_rate": "0.200000000000000000",
"max_change_rate": "0.010000000000000000"
},
"update_time": "2023-03-15T00:00:00Z"
},
"min_self_delegation": "1",
"mxAddress": "mx1f83rnk6s2kqcdl0knp8dj6p5s9u5km925spepg",
"hexAddress": "f5eaed2e3f3afe488e66825802d31a00fb55aaad"
},
"active": true,
"signedBlocks": 0,
"unsignedBlocks": 0,
"delegators_count": "25",
"unbonding": [
{
"denom": "mpx",
"amount": "0"
}
],
"unclaimed": []
}
],
"hasNext": true,
"limit": 1,
"page": 1
}
GET /api/1.0/validators/
Obtendo o validador pelo endereço.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | string |
Endereço do Validador. Campo obrigatório.
Resposta de Exemplo
{
"validator": {
"operator_address": "mxvaloper1f83rnk6s2kqcdl0knp8dj6p5s9u5km92qmc8qh",
"consensus_pubkey": {
"@type": "/cosmos.crypto.ed25519.PubKey",
"key": "4xr65XxFRDaSxDZeoOKUaA2ct5P0FOdFRo7aFrEwuA4="
},
"jailed": true,
"status": "BOND_STATUS_UNBONDED",
"tokens": "990198998156041678366202",
"delegator_shares": "1000201004143681884897493.256170380531418749",
"description": {
"moniker": "validator6",
"identity": "",
"website": "",
"security_contact": "",
"details": ""
},
"unbonding_height": "0",
"unbonding_time": "2023-05-29T09:38:56.327294001Z",
"commission": {
"commission_rates": {
"rate": "0.100000000000000000",
"max_rate": "0.200000000000000000",
"max_change_rate": "0.010000000000000000"
},
"update_time": "2023-03-15T00:00:00Z"
},
"min_self_delegation": "1",
"mxAddress": "mx1f83rnk6s2kqcdl0knp8dj6p5s9u5km925spepg",
"hexAddress": "f5eaed2e3f3afe488e66825802d31a00fb55aaad"
},
"active": true,
"signedBlocks": 0,
"unsignedBlocks": 0,
"delegators_count": "25",
"unbonding": [
{
"denom": "mpx",
"amount": "0"
}
],
"unclaimed": []
}
estatísticas - Obtendo estatísticas
GET /api/1.0/stat
Resposta de Exemplo
{
"totalBlocks": 8242000,
"totalTransactions": 1234567,
"totalValidators": 42,
"activeValidators": 38,
"totalSupply": "1000000000000000000000000",
"bondedTokens": "750000000000000000000000",
"circulatingSupply": "800000000000000000000000",
"inflation": "8.5",
"communityPool": [
{
"denom": "xfi",
"amount": "10000000000000000000000"
}
]
}
logs-eventos - Logs de contratos inteligentes
Obtendo logs de contratos inteligentes.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
blockHash | string | Hash do bloco. |
endereçoOrigem | string | O endereço que chamou o contrato inteligente. |
transactionHash | string | Hash da transação. |
índiceTransação | número | O índice do log na transação. |
númeroBloco | string | Número do bloco. |
endereçoContrato | string | Endereço do contrato inteligente. |
página | número | Número da página. |
limite | número | O número de entidades a oferecer. |
ordenar | string | O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), que indica a diminuição ou aumento do campo especificado. Exemplo: '-altura' é decrescente, 'altura' é crescente. |
Resposta de Exemplo
{
"docs": [
{
"blockHash": "0x123abc...",
"blockNumber": 8241762,
"contractAddress": "0x456def...",
"originAddress": "0x789ghi...",
"transactionHash": "0xabc123...",
"transactionIndex": 0,
"logIndex": 1,
"topics": [
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
],
"data": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000",
"timestamp": "2025-01-31T13:20:32.370Z"
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
contratos - Consultas de contratos inteligentes
Obtendo contratos inteligentes.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereçoContrato | string | Endereço do Contrato Inteligente. |
tipoToken | string | Pesquisa por tipo de token. |
endereçoCriador | string | O endereço do criador do contrato. |
hashTx | string | Hash do contrato. |
númeroBloco | string | Número do Bloco. |
verificado | booleano | Se o contrato inteligente está verificado ou não. |
página | número | Número da página. |
limite | número | O número de entidades a oferecer. |
ordenar | string | O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), que indica a diminuição ou aumento do campo especificado. Exemplo: '-altura' é decrescente, 'altura' é crescente. |
Resposta de Exemplo
**GET**/api/1.0/contracts/compiler-versions
Obtendo uma lista de versões do compilador.
Resposta de Exemplo
[
"0.8.28",
"0.8.27",
"0.8.26",
"0.8.25",
"0.8.24",
"0.8.23",
"0.8.22",
"0.8.21",
"0.8.20",
"0.8.19",
"0.8.18",
"0.8.17",
"0.8.16",
"0.8.15",
"0.8.14",
"0.8.13",
"0.8.12",
"0.8.11",
"0.8.10",
"0.8.9",
"0.8.8",
"0.8.7",
"0.8.6",
"0.8.5",
"0.8.4",
"0.8.3",
"0.8.2",
"0.8.1",
"0.8.0",
"0.7.6",
"0.7.5",
"0.7.4",
"0.7.3",
"0.7.2",
"0.7.1",
"0.7.0",
"0.6.12",
"0.6.11",
"0.6.10",
"0.6.9",
"0.6.8",
"0.6.7",
"0.6.6",
"0.6.5",
"0.6.4",
"0.6.3",
"0.6.2",
"0.6.1",
"0.6.0",
"0.5.17",
"0.5.16",
"0.5.15",
"0.5.14",
"0.5.13",
"0.5.12",
"0.5.11",
"0.5.10",
"0.5.9",
"0.5.8",
"0.5.7",
"0.5.6",
"0.5.5",
"0.5.4",
"0.5.3",
"0.5.2",
"0.5.1",
"0.5.0",
"0.4.26",
"0.4.25",
"0.4.24",
"0.4.23",
"0.4.22",
"0.4.21",
"0.4.20",
"0.4.19",
"0.4.18",
"0.4.17",
"0.4.16",
"0.4.15",
"0.4.14",
"0.4.13",
"0.4.12",
"0.4.11",
"0.4.10"
]
GET /api/1.0/contracts/
Obtendo o endereço de um contrato inteligente.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | cadeia de caracteres | Endereço do Contrato. Campo obrigatório. |
Resposta de Exemplo
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"creatorAddress": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"txHashCreate": "0x66cc14d6fc72561965e5f4a8088f17ae044fa4f0dc5a0eddfb3d1637022f6724",
"blockNumberCreate": "866356",
"timestamp": "2023-10-05T14:17:14.281Z",
"verified": true,
"tokenType": "CFC-20",
"name": "Token de Exemplo",
"symbol": "STK",
"decimals": 18,
"totalSupply": "1000000000000000000000000",
"abi": "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"type\":\"function\"}]",
"sourceCode": "pragma solidity ^0.8.0; contrato TokenExemplo { ... }",
"compilerVersion": "v0.8.20+commit.a1b79de6"
}
POST /api/1.0/contracts/verify
A solicitação responsável por verificar o contrato.
Após a verificação bem-sucedida do contrato, a Interface Binária do Aplicativo (ABI) é armazenada no banco de dados, permitindo definir os métodos do contrato.
Corpo da solicitação
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"sourceCode": "pragma solidity ^0.8.0; contrato TokenExemplo { string public name = \"Token de Exemplo\"; }",
"contractName": "TokenExemplo",
"compilerVersion": "v0.8.20+commit.a1b79de6",
"optimization": false,
"runs": 200,
"constructorArguments": "",
"libraries": [
{
"name": "SafeMath",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
],
"evmVersion": "default",
"optimizationRuns": 0
}
tokens - Lista de tokens
GET /api/1.0/tokens
Obtendo uma lista de tokens.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
símboloDoToken | cadeia de caracteres | Caractere do token |
tipoDeToken | cadeia de caracteres | Pesquisar por tipo de token. |
endereçoDoContrato | cadeia de caracteres | Endereço do Contrato |
hashDeCriação | cadeia de caracteres | O hash da criação do token. |
endereçoDoCriador | cadeia de caracteres | Endereço do criador do token. |
página | número | Número da página. |
limite | número | O número de entidades para liberar. |
ordenação | cadeia de caracteres | O campo de ordenação aceita valores com ou sem prefixo "-" (menos), indicando a diminuição ou aumento do campo especificado. Exemplo: '-altura' é descendente, 'altura' é ascendente. |
Resposta de Exemplo
{
"docs": [
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"blockNumberCreate": "866356",
"creatorAddress": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"timestamp": "2023-10-05T14:17:14.281Z",
"tokenType": "CFC-20",
"txHashCreate": "0x66cc14d6fc72561965e5f4a8088f17ae044fa4f0dc5a0eddfb3d1637022f6724",
"transferCount": 12,
"holderCount": 2,
"name": "Token de Exemplo",
"symbol": "STK",
"decimals": 18,
"totalSupply": "1000000000000000000000000"
},
{
"contractAddress": "0xb88a04d3eb73239377897607369a3af5e3f21ed3",
"blockNumberCreate": "866337",
"creatorAddress": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"timestamp": "2023-10-05T14:15:27.559Z",
"tokenType": "CFC-20",
"txHashCreate": "0x39a35b84ee7013edfdd1b03e5004e11302d08dfd01da366694529816a33e92ee",
"transferCount": 3,
"holderCount": 2,
"name": "Token de Teste",
"symbol": "TEST",
"decimals": 18,
"totalSupply": "500000000000000000000000"
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
GET /api/1.0/tokens/
Recebendo um token.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | cadeia de caracteres | Endereço do Token. Campo obrigatório. |
Resposta de Exemplo
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"name": "Token de Exemplo",
"symbol": "STK",
"decimals": 18,
"totalSupply": "1000000000000000000000000",
"tokenType": "CFC-20",
"creatorAddress": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"txHashCreate": "0x66cc14d6fc72561965e5f4a8088f17ae044fa4f0dc5a0eddfb3d1637022f6724",
"blockNumberCreate": "866356",
"timestamp": "2023-10-05T14:17:14.281Z",
"transferCount": 12,
"holderCount": 2,
"verified": true
}
transferências-de-tokens
Consulta por transferências tokenizadas.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereçoDoContrato | cadeia de caracteres | Endereço do Contrato. |
númeroDoBloco | cadeia de caracteres | Número do bloco. |
endereço | cadeia de caracteres | Endereço da Conta. |
endereçoPara | cadeia de caracteres | Para o endereço. |
endereçoDe | cadeia de caracteres | Do endereço. |
símboloDoToken | cadeia de caracteres | Caractere do token. |
nomeDoToken | cadeia de caracteres | Nome do token. |
hashDeTransação | cadeia de caracteres | Hash do Contrato. |
idDoToken | cadeia de caracteres | ID do Token. |
idsDosTokens | array[cadeia de caracteres] | Lista de IDs de Tokens. |
tipoDeToken | cadeia de caracteres | Pesquisar por tipo de token. |
página | número | Número da página. |
limite | número | O número de entidades para liberar. |
ordenação | cadeia de caracteres | O campo de ordenação aceita valores com ou sem prefixo "-" (menos), indicando a diminuição ou aumento do campo especificado. Exemplo: '-altura' é descendente, 'altura' é ascendente. |
Resposta de Exemplo
{
"docs": [
{
"blockNumber": "866356",
"transactionHash": "0x66cc14d6fc72561965e5f4a8088f17ae044fa4f0dc5a0eddfb3d1637022f6724",
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"addressFrom": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"addressTo": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"value": "1000000000000000000",
"tokenSymbol": "STK",
"tokenName": "Token de Exemplo",
"tokenType": "CFC-20",
"tokenId": null,
"timestamp": "2023-10-05T14:17:14.281Z",
"logIndex": 1,
"transactionIndex": 0,
"erc1155Metadata": {
"tokenIds": [],
"amounts": []
}
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
titulares-de-tokens
Obtendo uma lista de titulares de tokens.
Parâmetro | Tipo | Descrição |
---|---|---|
símboloDoToken | string | Característica do token |
endereço | string | Endereço da conta. |
endereçoDoContrato | string | Endereço do contrato. |
númeroDoBloco | string | Número do bloco. |
tipoDeToken | string | Pesquisa por tipo de token. |
página | número | Número da página. |
limite | número | O número de entidades a serem fornecidas. |
ordenar | string | O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), o que indica a diminuição ou o aumento do campo especificado. Exemplo: '-altura' é descendente, 'altura' é ascendente. |
Exemplo de Resposta
{
"docs": [
{
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"balance": "1000000000000000000",
"tokenSymbol": "STK",
"tokenName": "Token Exemplo",
"tokenType": "CFC-20",
"percentage": "50.0",
"timestamp": "2023-10-05T14:17:14.281Z"
},
{
"address": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"balance": "1000000000000000000",
"tokenSymbol": "STK",
"tokenName": "Token Exemplo",
"tokenType": "CFC-20",
"percentage": "50.0",
"timestamp": "2023-10-05T14:17:14.281Z"
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
Inventário-de-tokens - inventário de token ERC-721
Gerenciamento de ativos e exibição de informações sobre tokens disponíveis no sistema blockchain.
Parâmetro | Tipo | Descrição |
---|---|---|
endereçoDoContrato | string | Endereço do Contrato Inteligente. |
endereçoDoCriador | string | O endereço do criador do contrato. |
endereçoDoProprietário | string | A string representando o endereço do proprietário do token CFC-721 a ser verificado inventário. |
idsDeTokens | string | Lista de ID do token. |
tipoDeToken | string | Procure por tipo de token. Valores disponíveis: CFC-20, CFC-721. |
página | número | Número da Página. |
limite | número | O número de entidades a serem fornecidas. |
ordenar | string | O campo de ordenação aceita valores com ou sem o prefixo "-" (menos), o que indica a diminuição ou o aumento do campo especificado. Exemplo: '-altura' é descendente, 'altura' é ascendente. |
Exemplo de Resposta
{
"docs": [
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"ownerAddress": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"tokenIds": ["1", "2", "3"],
"tokenType": "CFC-721",
"creatorAddress": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"timestamp": "2023-10-05T14:17:14.281Z",
"metadata": {
"name": "Coleção NFT",
"description": "Coleção de NFTs de exemplo",
"image": "https://example.com/image.png",
"attributes": [
{
"trait_type": "raridade",
"value": "rara"
}
]
},
"xds": {
"name": "nft.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64"
}
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
GET /api/1.0/token-inventory//
Verificações de disponibilidade de estoque em um endereço específico.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereçoDoContrato | string | Endereço do Contrato Inteligente. |
idDoToken | string | ID do Token. |
Exemplo de Resposta
{
"contractAddress": "0x10d1a6c0c2f4f1ab1924f7271b2cc95e94e8a223",
"tokenId": "1",
"ownerAddress": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"tokenType": "CFC-721",
"metadata": {
"name": "NFT Exemplo #1",
"description": "Um colecionável digital único",
"image": "https://example.com/nft1.png",
"attributes": [
{
"trait_type": "raridade",
"value": "rara"
}
]
},
"xds": {
"name": "nft1.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64"
}
}
pesquisar
GET /api/1.0/search
Pesquisando um endereço, bloco, transação ou token com base em um valor passado.
Parâmetro | Tipo | Descrição |
---|---|---|
valor | string | Endereço, bloco, transação ou token. Campo obrigatório. |
Exemplo de Resposta
{
"type": "endereço",
"value": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"details": {
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"balance": "1000000000000000000",
"isContract": false,
"transactionCount": 42
},
"xds": {
"name": "carteira.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64"
}
}
fluxo
OPÇÕES /api/1.0/stream/new-block
Obtendo um fluxo de dados de novos dados de bloco.
OPÇÕES /api/1.0/stream/new-tx
Obtendo um fluxo de dados de novas transações.
Por protocolo socketio.
Exemplo para js:
const socket = io(`https://test.xfiscan.com/stream`, {path: '/api/1.0/stream'})
socket.on('connect', () =&gt; {
console.log('connect');
})
socket.on('disconnect', (data) =&gt; console.log(data));
socket.on('new-block', (data) =&gt; console.log(data));
socket.on('new-txs, (data) =&gt; console.log(data));
Onde:
url de conexão | https://test.xfiscan.com/stream |
caminho do handshake | /api/1.0/stream |
novo-bloco | inscreva-se para receber novos blocos |
novo-tx | inscreva-se para receber novas transações |
Obtenha o ABI do Contrato para Códigos-Fonte de Contrato Verificados
Retorna a Interface Binária de Aplicativos do Contrato (ABI) de um contrato inteligente verificado.
**GET** /api/1.0/verify-contract
Solicitação
https://xfiscan.com/api/1.0/verify-contract
?chainid=1
&amp;module=contract
&amp;action=getabi
&amp;address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413
&amp;apikey=YourApiKeyToken
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | string | o endereço do contrato que possui um código fonte verificado |
Exemplo de Resposta
]\",\"name\":\"proposals\",\"outputs\":[{\"name\":\"recipient\",\"type\":\"endereço\"},,,,,,,,,,,],\"type\":\"function\"},,],\"name\":\"aprovar\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"executarProposta\",\"outputs\":[{\"name\":\"_sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},,,],\"name\":\"transferirDe\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"name\":\"destinatáriosPermitidos\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"type\":\"function\"},,],\"name\":\"transferirSemRecompensa\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},,,,,,,],\"name\":\"novaProposta\",\"outputs\":[{\"name\":\"_idProposta\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"name\":\"DAOpago\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"novoContrato\",\"outputs\":[],\"type\":\"function\"},],\"name\":\"saldoDe\",\"outputs\":[{\"name\":\"saldo\",\"type\":\"uint256\"}],\"type\":\"function\"},,],\"name\":\"alterarDestinatáriosPermitidos\",\"outputs\":[{\"name\":\"_sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"pago\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},,],\"name\":\"separarDAO\",\"outputs\":[{\"name\":\"_sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"recuperarRecompensaDAO\",\"outputs\":[{\"name\":\"_sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},,],\"name\":\"transferir\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"name\":\"criarProxyToken\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},],\"name\":\"getNewDAOAddress\",\"outputs\":[{\"name\":\"_novoDAO\",\"type\":\"endereço\"}],\"type\":\"function\"},,],\"name\":\"votar\",\"outputs\":[{\"name\":\"_idVoto\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"tokenRecompensa\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},,,],\"name\":\"transferirDeSemRecompensa\",\"outputs\":[{\"name\":\"sucesso\",\"type\":\"bool\"}],\"type\":\"function\"},,],\"name\":\"permissão\",\"outputs\":[{\"name\":\"restante\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"name\":\"alterarDepósitoProposta\",\"outputs\":[],\"type\":\"function\"},],\"name\":\"bloqueado\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},,,,],\"name\":\"verificarCódigoProposta\",\"outputs\":[{\"name\":\"_códigoVerificado\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},,,,,,],\"type\":\"construtor\"},,,],\"name\":\"Transferência\",\"type\":\"evento\"},,,],\"name\":\"Aprovação\",\"type\":\"evento\"},],\"name\":\"AbastecimentoAtéData\",\"type\":\"evento\"},,],\"name\":\"TokenCriado\",\"type\":\"evento\"},,],\"name\":\"Reembolso\",\"type\":\"evento\"},,,,,],\"name\":\"PropostaAdicionada\",\"type\":\"evento\"},,,],\"name\":\"Votado\",\"type\":\"evento\"},,,],\"name\":\"PropostaApurada\",\"type\":\"evento\"},],\"name\":\"NovoCurador\",\"type\":\"evento\"},,],\"name\":\"DestinatárioPermitidoAlterado\",\"type\":\"evento\"}]"
Obtenha o Código-Fonte do Contrato para Contratos Verificados
Retorna o código-fonte Solidity de um contrato inteligente verificado.
Você também pode baixar uma lista CSV de endereços de contratos verificados dos quais os publicadores de código forneceram uma licença de fonte aberta correspondente para redistribuição.
**GET** api/1.0/verify-contract
Solicitação
https://xfiscan.com/api/1.0/verify-contract
?chainid=1
&amp;module=contrato
&amp;action=obtercódigofonte
&amp;address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413
&amp;apikey=YourApiKeyToken
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
endereço | string | o endereço do contrato que possui um código-fonte verificado |
Exemplo de Resposta
\n\n\ncontract Token is TokenInterface \n\n function balanceOf(address _owner) constant returns (uint256 balance) \n\n function transfer(address _to, uint256 _amount) noEther returns (bool success) else \n }\n\n function transferFrom(\n address _from,\n address _to,\n uint256 _amount\n ) noEther returns (bool success) else \n }\n\n function approve(address _spender, uint256 _amount) returns (bool success) \n\n function allowance(address _owner, address _spender) constant returns (uint256 remaining) \n}\n\n\n/*\nThis file is part of the DAO.\n\nThe DAO is free software: you can redistribute it and/or modify\nit under the terms of the GNU lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThe DAO is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU lesser General Public License for more details.\n\nYou should have received a copy of the GNU lesser General Public License\nalong with the DAO. If not, see .\n*/\n\n\n/*\nBasic account, used by the DAO contract to separately manage both the rewards \nand the extraBalance accounts. \n*/\n\ncontract ManagedAccountInterface \n\n\ncontract ManagedAccount is ManagedAccountInterface\n\n // When the contract receives a transaction without data this is called. \n // It counts the amount of ether it receives and stores it in \n // accumulatedInput.\n function() \n\n function payOut(address _recipient, uint _amount) returns (bool) else \n }\n}\n/*\nThis file is part of the DAO.\n\nThe DAO is free software: you can redistribute it and/or modify\nit under the terms of the GNU lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThe DAO is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU lesser General Public License for more details.\n\nYou should have received a copy of the GNU lesser General Public License\nalong with the DAO. If not, see .\n*/\n\n\n/*\n * Token Creation contract, used by the DAO to create its tokens and initialize\n * its ether. Feel free to modify the divisor method to implement different\n * Token Creation parameters\n*/\n\n\ncontract TokenCreationInterface \n\n\ncontract TokenCreation is TokenCreationInterface, Token \n\n function createTokenProxy(address _tokenHolder) returns (bool success) \n return true;\n }\n throw;\n }\n\n function refund() noEther \n }\n }\n\n function divisor() constant returns (uint divisor) else if (closingTime - 4 days &gt; now) else \n }\n}\n/*\nThis file is part of the DAO.\n\nThe DAO is free software: you can redistribute it and/or modify\nit under the terms of the GNU lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThe DAO is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU lesser General Public License for more details.\n\nYou should have received a copy of the GNU lesser General Public License\nalong with the DAO. If not, see .\n*/\n\n\n/*\nStandard smart contract for a Decentralized Autonomous Organization (DAO)\nto automate organizational governance and decision-making.\n*/\n\n\ncontract DAOInterface \n\n // Used only in the case of a newCurator proposal.\n struct SplitData \n\n // Used to restrict access to certain functions to only DAO Token Holders\n modifier onlyTokenholders {}\n\n /// @dev Constructor setting the Curator and the address\n /// for the contract able to create another DAO as well as the parameters\n /// for the DAO Token Creation\n /// @param _curator The Curator\n /// @param _daoCreator The contract able to (re)create this DAO\n /// @param _proposalDeposit The deposit to be paid for a regular proposal\n /// @param _minTokensToCreate Minimum required wei-equivalent tokens\n /// to be created for a successful DAO Token Creation\n /// @param _closingTime Date (in Unix time) of the end of the DAO Token Creation\n /// @param _privateCreation If zero the DAO Token Creation is open to public, a\n /// non-zero address means that the DAO Token Creation is only for the address\n // This is the constructor: it can not be overloaded so it is commented out\n // function DAO(\n // address _curator,\n // DAO_Creator _daoCreator,\n // uint _proposalDeposit,\n // uint _minTokensToCreate,\n // uint _closingTime,\n // address _privateCreation\n // );\n\n /// @notice Create Token with `msg.sender` as the beneficiary\n /// @return Whether the token creation was successful\n function () returns (bool success);\n\n\n /// @dev This function is used to send ether back\n /// to the DAO, it can also be used to receive payments that should not be\n /// counted as rewards (donations, grants, etc.)\n /// @return Whether the DAO received the ether successfully\n function receiveEther() returns(bool);\n\n /// @notice `msg.sender` creates a proposal to send `_amount` Wei to\n /// `_recipient` with the transaction data `_transactionData`. If\n /// `_newCurator` is true, then this is a proposal that splits the\n /// DAO and sets `_recipient` as the new DAO's Curator.\n /// @param _recipient Address of the recipient of the proposed transaction\n /// @param _amount Amount of wei to be sent with the proposed transaction\n /// @param _description String describing the proposal\n /// @param _transactionData Data of the proposed transaction\n /// @param _debatingPeriod Time used for debating a proposal, at least 2\n /// weeks for a regular proposal, 10 days for new Curator proposal\n /// @param _newCurator Bool defining whether this proposal is about\n /// a new Curator or not\n /// @return The proposal ID. Needed for voting on the proposal\n function newProposal(\n address _recipient,\n uint _amount,\n string _description,\n bytes _transactionData,\n uint _debatingPeriod,\n bool _newCurator\n ) onlyTokenholders returns (uint _proposalID);\n\n /// @notice Check that the proposal with the ID `_proposalID` matches the\n /// transaction which sends `_amount` with data `_transactionData`\n /// to `_recipient`\n /// @param _proposalID The proposal ID\n /// @param _recipient The recipient of the proposed transaction\n /// @param _amount The amount of wei to be sent in the proposed transaction\n /// @param _transactionData The data of the proposed transaction\n /// @return Whether the proposal ID matches the transaction data or not\n function checkProposalCode(\n uint _proposalID,\n address _recipient,\n uint _amount,\n bytes _transactionData\n ) constant returns (bool _codeChecksOut);\n\n /// @notice Vote on proposal `_proposalID` with `_supportsProposal`\n /// @param _proposalID The proposal ID\n /// @param _supportsProposal Yes/No - support of the proposal\n /// @return The vote ID.\n function vote(\n uint _proposalID,\n bool _supportsProposal\n ) onlyTokenholders returns (uint _voteID);\n\n /// @notice Checks whether proposal `_proposalID` with transaction data\n /// `_transactionData` has been voted for or rejected, and executes the\n /// transaction in the case it has been voted for.\n /// @param _proposalID The proposal ID\n /// @param _transactionData The data of the proposed transaction\n /// @return Whether the proposed transaction has been executed or not\n function executeProposal(\n uint _proposalID,\n bytes _transactionData\n ) returns (bool _success);\n\n /// @notice ATTENTION! I confirm to move my remaining ether to a new DAO\n /// with `_newCurator` as the new Curator, as has been\n /// proposed in proposal `_proposalID`. This will burn my tokens. This can\n /// not be undone and will split the DAO into two DAO's, with two\n /// different underlying tokens.\n /// @param _proposalID The proposal ID\n /// @param _newCurator The new Curator of the new DAO\n /// @dev This function, when called for the first time for this proposal,\n /// will create a new DAO and send the sender's portion of the remaining\n /// ether and Reward Tokens to the new DAO. It will also burn the DAO Tokens\n /// of the sender.\n function splitDAO(\n uint _proposalID,\n address _newCurator\n ) returns (bool _success);\n\n /// @dev can only be called by the DAO itself through a proposal\n /// updates the contract of the DAO by sending all ether and rewardTokens\n /// to the new DAO. The new DAO needs to be approved by the Curator\n /// @param _newContract the address of the new contract\n function newContract(address _newContract);\n\n\n /// @notice Add a new possible recipient `_recipient` to the whitelist so\n /// that the DAO can send transactions to them (using proposals)\n /// @param _recipient New recipient address\n /// @dev Can only be called by the current Curator\n /// @return Whether successful or not\n function changeAllowedRecipients(address _recipient, bool _allowed) external returns (bool _success);\n\n\n /// @notice Change the minimum deposit required to submit a proposal\n /// @param _proposalDeposit The new proposal deposit\n /// @dev Can only be called by this DAO (through proposals with the\n /// recipient being this DAO itself)\n function changeProposalDeposit(uint _proposalDeposit) external;\n\n /// @notice Move rewards from the DAORewards managed account\n /// @param _toMembers If true rewards are moved to the actual reward account\n /// for the DAO. If not then it's moved to the DAO itself\n /// @return Whether the call was successful\n function retrieveDAOReward(bool _toMembers) external returns (bool _success);\n\n /// @notice Get my portion of the reward that was sent to `rewardAccount`\n /// @return Whether the call was successful\n function getMyReward() returns(bool _success);\n\n /// @notice Withdraw `_account`'s portion of the reward from `rewardAccount`\n /// to `_account`'s balance\n /// @return Whether the call was successful\n function withdrawRewardFor(address _account) internal returns (bool _success);\n\n /// @notice Send `_amount` tokens to `_to` from `msg.sender`. Prior to this\n /// getMyReward() is called.\n /// @param _to The address of the recipient\n /// @param _amount The amount of tokens to be transfered\n /// @return Whether the transfer was successful or not\n function transferWithoutReward(address _to, uint256 _amount) returns (bool success);\n\n /// @notice Send `_amount` tokens to `_to` from `_from` on the condition it\n /// is approved by `_from`. Prior to this getMyReward() is called.\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _amount The amount of tokens to be transfered\n /// @return Whether the transfer was successful or not\n function transferFromWithoutReward(\n address _from,\n address _to,\n uint256 _amount\n ) returns (bool success);\n\n /// @notice Doubles the 'minQuorumDivisor' in the case quorum has not been\n /// achieved in 52 weeks\n /// @return Whether the change was successful or not\n function halveMinQuorum() returns (bool _success);\n\n /// @return total number of proposals ever created\n function numberOfProposals() constant returns (uint _numberOfProposals);\n\n /// @param _proposalID Id of the new curator proposal\n /// @return Address of the new DAO\n function getNewDAOAddress(uint _proposalID) constant returns (address _newDAO);\n\n /// @param _account The address of the account which is checked.\n /// @return Whether the account is blocked (not allowed to transfer tokens) or not.\n function isBlocked(address _account) internal returns (bool);\n\n /// @notice If the caller is blocked by a proposal whose voting deadline\n /// has exprired then unblock him.\n /// @return Whether the account is blocked (not allowed to transfer tokens) or not.\n function unblockMe() returns (bool);\n\n event ProposalAdded(\n uint indexed proposalID,\n address recipient,\n uint amount,\n bool newCurator,\n string description\n );\n event Voted(uint indexed proposalID, bool position, address indexed voter);\n event ProposalTallied(uint indexed proposalID, bool result, uint quorum);\n event NewCurator(address indexed _newCurator);\n event AllowedRecipientChanged(address indexed _recipient, bool _allowed);\n}\n\n// The DAO contract itself\ncontract DAO is DAOInterface, Token, TokenCreation \n\n function DAO(\n address _curator,\n DAO_Creator _daoCreator,\n uint _proposalDeposit,\n uint _minTokensToCreate,\n uint _closingTime,\n address _privateCreation\n ) TokenCreation(_minTokensToCreate, _closingTime, _privateCreation) \n\n function () returns (bool success) \n\n\n function receiveEther() returns (bool) \n\n\n function newProposal(\n address _recipient,\n uint _amount,\n string _description,\n bytes _transactionData,\n uint _debatingPeriod,\n bool _newCurator\n ) onlyTokenholders returns (uint _proposalID) else if (\n !_newCurator\n &amp;&amp; (!isRecipientAllowed(_recipient) || (_debatingPeriod &lt; minProposalDebatePeriod))\n ) \n\n if (_debatingPeriod &gt; 8 weeks)\n throw;\n\n if (!isFueled\n || now &lt; closingTime\n || (msg.value &lt; proposalDeposit &amp;&amp; !_newCurator)) \n\n if (now + _debatingPeriod &lt; now) // prevents overflow\n throw;\n\n // to prevent a 51% attacker to convert the ether into deposit\n if (msg.sender == address(this))\n throw;\n\n _proposalID = proposals.length++;\n Proposal p = proposals[_proposalID];\n p.recipient = _recipient;\n p.amount = _amount;\n p.description = _description;\n p.proposalHash = sha3(_recipient, _amount, _transactionData);\n p.votingDeadline = now + _debatingPeriod;\n p.open = true;\n //p.proposalPassed = False; // that's default\n p.newCurator = _newCurator;\n if (_newCurator)\n p.splitData.length++;\n p.creator = msg.sender;\n p.proposalDeposit = msg.value;\n\n sumOfProposalDeposits += msg.value;\n\n ProposalAdded(\n _proposalID,\n _recipient,\n _amount,\n _newCurator,\n _description\n );\n }\n\n\n function checkProposalCode(\n uint _proposalID,\n address _recipient,\n uint _amount,\n bytes _transactionData\n ) noEther constant returns (bool _codeChecksOut) \n\n\n function vote(\n uint _proposalID,\n bool _supportsProposal\n ) onlyTokenholders noEther returns (uint _voteID) \n\n if (_supportsProposal) else \n\n if (blocked[msg.sender] == 0) else if (p.votingDeadline &gt; proposals[blocked[msg.sender]].votingDeadline) \n\n Voted(_proposalID, _supportsProposal, msg.sender);\n }\n\n\n function executeProposal(\n uint _proposalID,\n bytes _transactionData\n ) noEther returns (bool _success) \n\n // Check if the proposal can be executed\n if (now &lt; p.votingDeadline // has the voting deadline arrived?\n // Have the votes been counted?\n || !p.open\n // Does the transaction code match the proposal?\n || p.proposalHash != sha3(p.recipient, p.amount, _transactionData)) \n\n // If the curator removed the recipient from the whitelist, close the proposal\n // in order to free the deposit and allow unblocking of voters\n if (!isRecipientAllowed(p.recipient)) \n\n bool proposalCheck = true;\n\n if (p.amount &gt; actualBalance())\n proposalCheck = false;\n\n uint quorum = p.yea + p.nay;\n\n // require 53% for calling newContract()\n if (_transactionData.length &gt;= 4 &amp;&amp; _transactionData[0] == 0x68\n &amp;&amp; _transactionData[1] == 0x37 &amp;&amp; _transactionData[2] == 0xff\n &amp;&amp; _transactionData[3] == 0x1e\n &amp;&amp; quorum &lt; minQuorum(actualBalance() + rewardToken[address(this)])) \n\n if (quorum &gt;= minQuorum(p.amount)) \n\n // Execute result\n if (quorum &gt;= minQuorum(p.amount) &amp;&amp; p.yea &gt; p.nay &amp;&amp; proposalCheck) \n }\n\n closeProposal(_proposalID);\n\n // Initiate event\n ProposalTallied(_proposalID, _success, quorum);\n }\n\n\n function closeProposal(uint _proposalID) internal \n\n function splitDAO(\n uint _proposalID,\n address _newCurator\n ) noEther onlyTokenholders returns (bool _success) \n\n // If the new DAO doesn't exist yet, create the new DAO and store the\n // current split data\n if (address(p.splitData[0].newDAO) == 0) \n\n // Move ether and assign new Tokens\n uint fundsToBeMoved =\n (balances[msg.sender] * p.splitData[0].splitBalance) /\n p.splitData[0].totalSupply;\n if (p.splitData[0].newDAO.createTokenProxy.value(fundsToBeMoved)(msg.sender) == false)\n throw;\n\n\n // Assign reward rights to new DAO\n uint rewardTokenToBeMoved =\n (balances[msg.sender] * p.splitData[0].rewardToken) /\n p.splitData[0].totalSupply;\n\n uint paidOutToBeMoved = DAOpaidOut[address(this)] * rewardTokenToBeMoved /\n rewardToken[address(this)];\n\n rewardToken[address(p.splitData[0].newDAO)] += rewardTokenToBeMoved;\n if (rewardToken[address(this)] &lt; rewardTokenToBeMoved)\n throw;\n rewardToken[address(this)] -= rewardTokenToBeMoved;\n\n DAOpaidOut[address(p.splitData[0].newDAO)] += paidOutToBeMoved;\n if (DAOpaidOut[address(this)] &lt; paidOutToBeMoved)\n throw;\n DAOpaidOut[address(this)] -= paidOutToBeMoved;\n\n // Burn DAO Tokens\n Transfer(msg.sender, 0, balances[msg.sender]);\n withdrawRewardFor(msg.sender); // be nice, and get his rewards\n totalSupply -= balances[msg.sender];\n balances[msg.sender] = 0;\n paidOut[msg.sender] = 0;\n return true;\n }\n\n function newContract(address _newContract)\n\n //move all reward tokens\n rewardToken[_newContract] += rewardToken[address(this)];\n rewardToken[address(this)] = 0;\n DAOpaidOut[_newContract] += DAOpaidOut[address(this)];\n DAOpaidOut[address(this)] = 0;\n }\n\n\n function retrieveDAOReward(bool _toMembers) external noEther returns (bool _success) \n else \n DAOpaidOut[msg.sender] += reward;\n return true;\n }\n\n function getMyReward() noEther returns (bool _success) \n\n\n function withdrawRewardFor(address _account) noEther internal returns (bool _success) \n\n\n function transfer(address _to, uint256 _value) returns (bool success) else \n }\n\n\n function transferWithoutReward(address _to, uint256 _value) returns (bool success) \n\n\n function transferFrom(address _from, address _to, uint256 _value) returns (bool success) else \n }\n\n\n function transferFromWithoutReward(\n address _from,\n address _to,\n uint256 _value\n ) returns (bool success) \n\n\n function transferPaidOut(\n address _from,\n address _to,\n uint256 _value\n ) internal returns (bool success) \n\n\n function changeProposalDeposit(uint _proposalDeposit) noEther external \n proposalDeposit = _proposalDeposit;\n }\n\n\n function changeAllowedRecipients(address _recipient, bool _allowed) noEther external returns (bool _success) \n\n\n function isRecipientAllowed(address _recipient) internal returns (bool _isAllowed) \n\n function actualBalance() constant returns (uint _actualBalance) \n\n\n function minQuorum(uint _value) internal constant returns (uint _minQuorum) \n\n\n function halveMinQuorum() returns (bool _success) else \n }\n\n function createNewDAO(address _newCurator) internal returns (DAO _newDAO) \n\n function numberOfProposals() constant returns (uint _numberOfProposals) \n\n function getNewDAOAddress(uint _proposalID) constant returns (address _newDAO) \n\n function isBlocked(address _account) internal returns (bool) else \n }\n\n function unblockMe() returns (bool) \n}\n\ncontract DAO_Creator \n}\n",
"ABI":"[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"name\":\"recipient\",\"type\":\"address\"},,,,,,,,,,,],\"type\":\"function\"},,],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},,],\"name\":\"executeProposal\",\"outputs\":[{\"name\":\"_success\",\"type\":\"bool\"}],\"type\":\"function\"},,,],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"allowedRecipients\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"type\":\"function\"},,],\"name\":\"transferWithoutReward\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},,,,,,,],\"name\":\"newProposal\",\"outputs\":[{\"name\":\"_proposalID\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"name\":\"DAOpaidOut\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"newContract\",\"outputs\":[],\"type\":\"function\"},],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"function\"},,],\"name\":\"changeAllowedRecipients\",\"outputs\":[{\"name\":\"_success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"paidOut\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},,],\"name\":\"splitDAO\",\"outputs\":[{\"name\":\"_success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"retrieveDAOReward\",\"outputs\":[{\"name\":\"_success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},,],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"createTokenProxy\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},],\"name\":\"getNewDAOAddress\",\"outputs\":[{\"name\":\"_newDAO\",\"type\":\"address\"}],\"type\":\"function\"},,],\"name\":\"vote\",\"outputs\":[{\"name\":\"_voteID\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},],\"name\":\"rewardToken\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},,,],\"name\":\"transferFromWithoutReward\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"type\":\"function\"},,],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"name\":\"changeProposalDeposit\",\"outputs\":[],\"type\":\"function\"},],\"name\":\"blocked\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"type\":\"function\"},],\"type\":\"function\"},,,,],\"name\":\"checkProposalCode\",\"outputs\":[{\"name\":\"_codeChecksOut\",\"type\":\"bool\"}],\"type\":\"function\"},],\"type\":\"function\"},,,,,,],\"type\":\"constructor\"},,,],\"name\":\"Transfer\",\"type\":\"event\"},,,],\"name\":\"Approval\",\"type\":\"event\"},],\"name\":\"FuelingToDate\",\"type\":\"event\"},,],\"name\":\"CreatedToken\",\"type\":\"event\"},,],\"name\":\"Refund\",\"type\":\"event\"},,,,,],\"name\":\"ProposalAdded\",\"type\":\"event\"},,,],\"name\":\"Voted\",\"type\":\"event\"},,,],\"name\":\"ProposalTallied\",\"type\":\"event\"},],\"name\":\"NewCurator\",\"type\":\"event\"},,],\"name\":\"AllowedRecipientChanged\",\"type\":\"event\"}]",
"ContractName":"DAO",
"CompilerVersion":"v0.3.1-2016-04-12-3ad5e82",
"OptimizationUsed":"1",
"Runs":"200",
"ConstructorArguments":"000000000000000000000000da4a4626d3e16e094de3225a751aab7128e965260000000000000000000000004a574510c7014e4ae985403536074abe582adfc80000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000000000000000000000000a968163f0a57b4000000000000000000000000000000000000000000000000000000000000057495e100000000000000000000000000000000000000000000000000000000000000000",
"EVMVersion":"Default",
"Library":"",
"LicenseType":"",
"Proxy":"0",
"Implementation":"",
"SwarmSource":""
}
]
}
Obter Criador do Contrato e Hash de Criação Tx
Retorna o endereço do criador do contrato e o hash da transação em que foi criado, até 5 de cada vez.
**GET** /api/1.0/verify-contract
Solicitação
https://xfiscan.com/api/1.0/verify-contract\n ?chainid=1\n &amp;module=contract\n &amp;action=getcontractcreation\n &amp;contractaddresses=0xB83c27805aAcA5C7082eB45C868d955Cf04C337F,\n0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45,\n0xe4462eb568E2DFbb5b0cA2D3DbB1A35C9Aa98aad,\n0xdAC17F958D2ee523a2206206994597C13D831ec7,\n0xf5b969064b91869fBF676ecAbcCd1c5563F591d0\n &amp;apikey=YourApiKeyToken
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
contractaddresses | string | Os endereços do contrato, até 5 de cada vez. |
Resposta de Exemplo
{
"status": "1",
"message": "OK",
"result": [
{
"contractAddress": "0xB83c27805aAcA5C7082eB45C868d955Cf04C337F",
"contractCreator": "0xa331f5c6b23c87d292da8b2118ebcc6a39633bb2",
"txHash": "0x66cc14d6fc72561965e5f4a8088f17ae044fa4f0dc5a0eddfb3d1637022f6724"
},
{
"contractAddress": "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",
"contractCreator": "0x1234567890abcdef1234567890abcdef12345678",
"txHash": "0x39a35b84ee7013edfdd1b03e5004e11302d08dfd01da366694529816a33e92ee"
}
]
}
Verificar Status de Verificação do Código Fonte
Retorna o sucesso ou erro do status de uma solicitação de verificação de contrato.
**GET** /api/1.0/verify-contract
Solicitação
https://xfiscan.com/api/1.0/verify-contract\n ?chainid=1\n &amp;module=contract\n &amp;action=checkverifystatus\n &amp;guid=x3ryqcqr1zdknhfhkimqmizlcqpxncqc6nrvp3pgrcpfsqedqi\n &amp;apikey=YourApiKeyToken
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
apikey | string | Seu token de chave de API. |
module | string | Contrato. |
action | string | Verificar código fonte. Valores disponíveis: getabi , getsourececode , getcontractcreation , verifysourcecode , checkverifystatus , verifyproxycontract , checkproxyverification . |
address | string | O endereço do contrato que tem um código fonte verificado. |
contractaddresses | array[string] | Os endereços do contrato, até 5 de cada vez. |
guid | string | O GUID único recebido da solicitação de verificação. |
chainid | string | A cadeia para enviar verificação, como 1 para mainnet. |
Resposta de Exemplo
{
"status": "1",
"message": "OK",
"result": "Pass - Verified"
}
Verificar Código Fonte
Este ponto de extremidade é limitado a 100 verificações/dia, independentemente do nível PRO da API.
A solicitação responsável por verificar o contrato. Submete um código fonte de contrato a um explorador para verificação.
**POST**/api/1.0/verify-contract
Solicitação
https://xfiscan.com/api/1.0/verify-contract\n ?chainid=1\n &amp;module=contract\n &amp;action=verifysourcecode\n &amp;apikey=YourApiKeyToken\n
Parâmetro | Tipo | Descrição |
---|---|---|
chainid | string | A cadeia para enviar verificação, como 1 para mainnet. |
codeformat | string | Arquivo único, use solidity-single-file JSON (recomendado), ou solidity-standard-json-input . |
sourceCode | string | O código fonte de Solidity. |
constructorArguments | string | Opcional, incluir se seu contrato usar argumentos de construtor. |
contractaddresses | array[string] | Os endereços do contrato, até 5 de cada vez. |
contractname | string | O nome do seu contrato, como Contracts/Verified.sol:Verified . |
compilerversion | string | Versão do compilador usada, como v0.8.24+commit.e11b9e09 . |
Lista de versões do compilador
Obtendo uma lista de versões do compilador.
**GET**/api/1.0/verify-contract/compiler-versions
Resposta de exemplo
[
"v0.8.28+commit.7893614a",
"v0.8.27+commit.40a35a09",
"v0.8.26+commit.8a97fa7a",
"v0.8.25+commit.b61c2a91",
"v0.8.24+commit.e11b9e09",
"v0.8.23+commit.f704f362",
"v0.8.22+commit.4fc1097e",
"v0.8.21+commit.d9974bed",
"v0.8.20+commit.a1b79de6",
"v0.8.19+commit.7dd6d404",
"v0.8.18+commit.87f61d96",
"v0.8.17+commit.8df45f5f",
"v0.8.16+commit.07c72cc2",
"v0.8.15+commit.e14f2714",
"v0.8.14+commit.80d49f37",
"v0.8.13+commit.abaa5c0e"
]
XDS
GET/api/1.0/xds/grace-period
Este ponto de extremidade retorna a duração do "período de carência" (em milissegundos), que é usado para gerenciar XDS.
Parâmetros
Nenhum
Esquema de Resposta
Parâmetro | Tipo | Descrição |
---|---|---|
gracePeriod | número | Duração do período de carência em milissegundos. |
Resposta de Exemplo
{
"gracePeriod": 2592000000
}
GET/api/1.0/xds/resolve/
Este ponto de extremidade recupera os detalhes de um nome ou endereço XDS.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
nomeOuEndereço | string | O nome ou endereço XDS a resolver. |
Resposta de Exemplo
{
"name": "example.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"cost": 1000000000000000000,
"createDate": "2023-10-05T14:17:14.281Z",
"expires": "2024-10-05T14:17:14.281Z",
"id": "66fc7d0a34e123456789abcd",
"label": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"node": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"owner": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"premium": 0,
"primary": true,
"updateDate": "2023-10-05T14:17:14.281Z",
"ownerXds": {
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"name": "owner.xds",
"expires": "2024-10-05T14:17:14.281Z"
}
}
Esquema de Resposta
Parâmetro | Tipo | Descrição |
---|---|---|
nome | string | Nome resolvido para o endereço. |
endereço | string | Endereço associado ao nome XDS. |
custo | número | Custo do nome no blockchain. |
dataDeCriação | string (data-hora) | Data em que o nome XDS foi criado. |
expira | string (data-hora) | Data de expiração do nome XDS. |
id | string | ID único do nome ou endereço. |
etiqueta | string | Representação hash da etiqueta do nome. |
nó | string | Representação hash do nó do nome. |
proprietário | string | Endereço do proprietário do nome. |
premium | número | Custo premium para o nome (se houver). |
primary | boolean | Se o nome é primário (true/false). |
updateDate | string (date-time) | Data da última atualização do nome XDS. |
ownerXds | objeto | Detalhes sobre o XDS do proprietário (objeto aninhado). |
- address | string | Endereço do proprietário do XDS. |
- name | string | Nome associado ao XDS do proprietário. |
- expires | string (date-time) | Data de expiração do XDS do proprietário. |
GET/api/1.0/xds/
Este endpoint recupera detalhes sobre um nome de domínio XDS (semelhante ao ENS).
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
name | string | O nome XDS a pesquisar. |
Resposta de Exemplo
{
"name": "sample.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"cost": 1000000000000000000,
"createDate": "2023-10-05T14:17:14.281Z",
"expires": "2024-10-05T14:17:14.281Z",
"id": "66fc7d0a34e123456789abcd",
"label": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"node": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"owner": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"premium": 0,
"primary": true,
"updateDate": "2023-10-05T14:17:14.281Z",
"ownerXds": {
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"name": "owner.xds",
"expires": "2024-10-05T14:17:14.281Z"
}
}
Esquema de Resposta
Parâmetro | Tipo | Descrição |
---|---|---|
nome | string | O nome do domínio XDS |
endereço | string | Endereço vinculado ao nome |
custo | número | O custo do nome de domínio em unidades de blockchain |
data de criação | string | Data em que o nome foi registrado |
expira | string | Data de expiração do nome |
id | string | Identificador único do nome XDS |
etiqueta | string | Hash da etiqueta do nome |
nó | string | Hash do nó do nome |
proprietário | string | Endereço do proprietário do nome XDS |
prêmio | número | Taxa premium para o nome (se aplicável) |
primário | booleano | Se esse é o nome principal (true/false) |
data de atualização | string | Data da última modificação do registro XDS |
ownerXds | objeto | Detalhes do XDS do proprietário (objeto aninhado) |
- endereço | string | Endereço vinculado ao proprietário |
- nome | string | Nome vinculado ao proprietário |
- expira | string | Data de vencimento do XDS do proprietário |
GET/api/1.0/xds
Este endpoint recupera uma lista paginada de nomes XDS com metadados detalhados.
Parâmetro | Tipo | Descrição |
---|---|---|
expira | string (date-time) | Data de expiração do nome XDS |
premium | número | Taxa premium para o nome (se aplicável) |
owner | string | Endereço do proprietário |
name | string | Nome XDS para pesquisar |
address | string | Endereço blockchain associado ao nome |
addresses | array[string] | Array de vários endereços de conta |
label | string | Representação de hash de etiqueta do nome |
cost | número | Custo do nome XDS |
primary | booleano | Se o nome é um identificador principal |
searchName | string | Consulta de pesquisa por nome |
page | número | Número da página (padrão: 1) |
limit | número | Número de registros por página (padrão: 10) |
sort | string | Campo de ordenação (padrão: -blockNumber ) |
select | string | Campos a serem incluídos na resposta |
Resposta de Exemplo
{
"docs": [
{
"name": "example.xds",
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"cost": 1000000000000000000,
"createDate": "2023-10-05T14:17:14.281Z",
"expires": "2024-10-05T14:17:14.281Z",
"id": "66fc7d0a34e123456789abcd",
"label": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"node": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"owner": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"premium": 0,
"primary": true,
"updateDate": "2023-10-05T14:17:14.281Z",
"ownerXds": {
"address": "0x9449078b371ff30a90ec36fe6191f164cd527d64",
"name": "owner.xds",
"expires": "2024-10-05T14:17:14.281Z"
}
}
],
"hasNext": true,
"limit": 10,
"page": 1
}
Esquema de Resposta
Parâmetro | Tipo | Descrição |
---|---|---|
nome | string | Nome de domínio XDS |
endereço | string | Endereço vinculado ao nome |
custo | número | Custo do nome em unidades de blockchain |
data de criação | string (date-time) | Data em que o nome foi registrado |
expira | string (date-time) | Data de expiração do nome |
id | cadeia de caracteres | Identificador único do nome XDS |
etiqueta | cadeia de caracteres | Hash da etiqueta do nome |
nó | cadeia de caracteres | Hash do nó do nome |
proprietário | cadeia de caracteres | Endereço do proprietário do nome XDS |
prêmio | número | Taxa premium para o nome (se aplicável) |
primário | booleano | Se esse é o nome primário (verdadeiro/falso) |
dataDeAtualização | cadeia de caracteres (data-hora) | Data da última modificação do registro XDS |
proprietarioXds | objeto | Detalhes do proprietário do XDS (objeto aninhado) |
proprietarioXds.endereco | cadeia de caracteres | Endereço vinculado ao proprietário |
proprietarioXds.nome | cadeia de caracteres | Nome vinculado ao proprietário |
proprietarioXds.vence | cadeia de caracteres (data-hora) | Data de expiração do XDS do proprietário |
temPróximo | booleano | Indica se existem mais páginas |
página | número | Número da página atual |
limite | número | Número de registros retornados por página |