This is a simple REST API using Flask that links in directly to the DUCO databases to return transactions, and balances.
- Install requirements using
pip3 install -r requirements.txt
- Run it using
gunicorn wsgi:app
- Locally, this is available on
127.0.0.1:5000
-
URL
/users/<username>
-
Method
GET
-
Success Response
Code:
200
Content:
{ "result": { "balance": { "balance": 1047.796283515931, "username": "dansinclair25" }, "miners": [ { "accepted": 1038, "algorithm": "DUCO-S1", "diff": 2000, "hashrate": 11086, "identifier": "ESP32 4", "rejected": 0, "sharetime": 5.677812, "software": "ESP32 CORE2 Miner v2.52", "threadid": "140479274537872", "username": "dansinclair25" }, { "accepted": 1269, "algorithm": "DUCO-S1", "diff": 5, "hashrate": 195, "identifier": "unos", "rejected": 0, "sharetime": 10.116792, "software": "Official AVR Miner (DUCO-S1A) v2.49", "threadid": "140479268060240", "username": "dansinclair25" } ], "transactions": [ { "amount": 9.855, "datetime": "29/04/2021 14:43:37", "hash": "a04b2a4dced85cc093dcdc9e57af197e34e295a3", "memo": "Bot coins to DUCO exchange", "recipient": "dansinclair25", "sender": "coinexchange" }, { "amount": 22.845, "datetime": "27/04/2021 14:30:14", "hash": "f60a135e0d1c2f0ad1f03eb55c87e4de9bd9f888", "memo": "Bot coins to DUCO exchange", "recipient": "dansinclair25", "sender": "coinexchange" }, { "amount": 0.01, "datetime": "26/04/2021 09:22:03", "hash": "183eccfe465fc23600cf07e1ec55beaf57ff2486", "memo": "faucet", "recipient": "dansinclair25", "sender": "ducofaucet" } ] }, "success": true }
-
URL
/transactions
-
Method
GET
-
URL Params
Optional Filters:
username=[alphanumeric]
- to get all transactions (sent or received) by a user. Only to be used with no other filtersamount=[float]
- to get all transactions with a specific amountrecipient=[alphanumeric]
- to get all transactions received by a usersender=[alphanumeric]
- to get all transactions sent by a userOptional Others:
sort=[key](:desc)
- sort the returned transactions by a given key. Direction is ascending by default. Only 1 sort per request.limit=[integer]
- only return a certain number of results. Only 1 limit per request. -
Success Response
Code:
200
Content:
{
"success": true,
"result": [
{
"amount": 5,
"datetime": "18/04/2021 09:19:32",
"hash": "d2b690c337fa7b74b97c52ae8d1fa3bbab31034b",
"memo": "abc",
"recipient": "Bilaboz",
"sender": "revox"
},
{
"amount": 1.5,
"datetime": "18/04/2021 09:20:21",
"hash": "2c3829febd60906580065c95ebff809d3977dc2b",
"memo": "-",
"recipient": "revox",
"sender": "coinexchange"
},
{
"amount": 5,
"datetime": "18/04/2021 09:27:16",
"hash": "b11019a12589831ccab2447bb69b08de51206693",
"memo": "-",
"recipient": "ATAR4XY",
"sender": "revox"
}
]
}
-
Error Response
Code:
400
Content:
{
"success": false,
"message": "Error fetching transactions"
}
-
URL
/transactions/<hash>
-
Method
GET
-
Success Reponse Code:
200
Content:{ "success": True, "result": { "amount": 5, "datetime": "18/04/2021 09:27:16", "hash": "b11019a12589831ccab2447bb69b08de51206693", "memo": "-", "recipient": "ATAR4XY", "sender": "revox" } }
-
Error Response
Code:
400
Content:{ "success": false, "message": "Error fetching transaction" }
-
URL
/balances
-
Method
GET
-
Success Response
Code:
200
Content:
{
"success": true,
"result": [
{
"balance": 47071.64148509737,
"username": "chipsa"
},
{
"balance": 45756.09652071045,
"username": "coinexchange"
},
{
"balance": 31812.522314445283,
"username": "aarican"
}
]
}
-
Error Response
Code:
400
Content:
{
"success": false,
"message": "Error fetching balances"
}
-
URL
/balances/<username>
-
Method
GET
-
Success Response
Code:
200
Content:
{
"success": true,
"result": {
"balance": 45756.09652071045,
"username": "coinexchange"
}
}
-
Error Response
Code:
400
Content:
{
"success": false,
"message": "Error fetching balance"
}
-
URL
/miners
-
Method
GET
-
URL Params
Optional Filters:
username=[alphanumeric]
- to get all miners belonging to a user. -
Success Response
Code:
200
Content:
{
"success": true,
"result": [
{
"accepted": 2935,
"algorithm": "DUCO-S1",
"diff": 5,
"hashrate": 168,
"id": "139797360490200",
"identifier": "ProMiniRig Node6",
"is estimated": "False",
"rejected": 0,
"sharetime": 3.324042,
"software": "Official AVR Miner (DUCO-S1A) v2.45",
"user": "MPM"
},
{
"accepted": 1234,
"algorithm": "DUCO-S1",
"diff": 98765,
"hashrate": 169000,
"id": "139797360421968",
"identifier": "PC Miner 1",
"is estimated": "False",
"rejected": 0,
"sharetime": 2.065604,
"software": "Official PC Miner (DUCO-S1) v2.45",
"user": "dansinclair25"
}
]
}
-
Error Response
Code:
400
Content:
{
"success": false,
"message": "Error fetching miners"
}
-
URL
/miners/<threadid>
-
Method
GET
-
Success Response
Code:
200
Content:
{
"success": true,
"result": {
"accepted": 2935,
"algorithm": "DUCO-S1",
"diff": 5,
"hashrate": 168,
"id": "139797360490200",
"identifier": "ProMiniRig Node6",
"is estimated": "False",
"rejected": 0,
"sharetime": 3.324042,
"software": "Official AVR Miner (DUCO-S1A) v2.45",
"user": "MPM"
}
}
-
Error Response
Code:
400
Content:
{
"success": false,
"message": "Error fetching miner"
}
-
URL
/statistics
-
Method
GET
-
Success Response
Code:
200
Content:
{
"Active connections": 6596,
"Active workers": {
"revox": 70,
"bilaboz": 1
},
"All-time mined DUCO": 936804.132060897,
"Current difficulty": 212500,
"DUCO-S1 hashrate": "1.6 GH/s",
"Duco JustSwap price": 0.00791081,
"Duco Node-S price": 0.001013,
"Duco price": 0.0112407,
"Duino-Coin Server API": "github.com/revoxhere/duino-coin",
"Last block hash": "f76f5524b9...",
"Last update": "08/05/2021 11:43:51 (UTC)",
"Mined blocks": 1593769271,
"Miners": "server.duinocoin.com/miners.json",
"Open threads": 14,
"Pool hashrate": "1.68 GH/s",
"Registered users": 4837,
"Server CPU usage": 43.2,
"Server RAM usage": 26.3,
"Server version": 2.4,
"Top 10 richest miners": [
"47079.374 DUCO - chipsa",
"45719.8415 DUCO - coinexchange",
"31812.5223 DUCO - aarican",
"28407.0982 DUCO - NodeSBroker",
"25776.1024 DUCO - cjmick",
"24408.7585 DUCO - roboalex2",
"21206.7592 DUCO - sabartheman",
"20611.379 DUCO - Homer22",
"20080.3961 DUCO - mikesb",
"16471.0628 DUCO - PHR9",
"15486.71 DUCO - MaddestHoldings"
],
"XXHASH hashrate": "118.5 MH/s"
}
Fetch all transactions for revox
:
/transactions?username=revox
Fetch all transactions in date order (oldest first):
/transactions?sort=datetime:desc
Fetch all transactions from dansinclair25
to treadstone42
:
/transactions?sender=dansinclair25&recipient=treadstone42
Fetch the last 10 transactions:
/transactions?sort=datetime&limit=10
Fetch all balances sorted by amount (highest amount first):
/balances?sort=balance:desc
Fetch balance for revox
:
/balances/revox
Fetch all miners for dansinclair25
:
/miners?username=dansinclair25
- No sorting or filtering (other than
username
) on miners. - Returned status code for errors maybe incorrect value (although still an error status code).