Key features:
- Supported by a large number of platforms π»
- A friendly & growing community π₯
- Easy to use & exchange π±
- Available everywhere π
- Cost-effective π°
- Easy to mine βοΈ
- Open-source π
Technical specifications:
- Coin supply: Infinite βΎοΈ (before December 2020: 350k coins)
- Premine: <5k blocks (<500coins) π
- Block time: Instant β‘
- Decimals: 20 π’
- Ticker: DUCO (α²)
- Algorithms: DUCO-S1, DUCO-S1A (+more planned) supported by Kolka system helping reward miners fairly β
Get started
| Official Wallet | Official Miners |
|---|---|
![]() |
![]() |
Official getting started guides for creating an account and setting up miners on variety of devices are available on the official website (or .onion version).
Community-made software
Other miners:
- nonceMiner by colonelwatch
- NodeJS-DuinoCoin-Miner by DarkThinking
- d-cpuminer by phantom32
- Go Miner by yippiez
- ducominer by its5Q
- Unofficial miners directory by various authors
Other tools:
- duino-tools by kyngs
- Duino-Coin Auto Updater by Bilaboz
This list will be actively updated.
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your feature branch
- Commit your changes
- Make sure everything works as intended
- Open a pull request
Master server API
To build your own Duino-Coin apps, here's a list of of commands the master server accepts. To start communication however, firstly you need to connect to the server. For now you have two options:
- TCP connection (recommended) - server IP and port are static:
tcp://51.15.127.80:2811 - Websocket connection (through proxy - may not be available 100% of the time) - server IP and port are static:
ws://51.15.127.80:15808
Make sure you don't create more than 24 connections per IP address and don't make more than 10 connections in time shorter than 30 seconds. If you do that, server may ban your IP for creating too much traffic and being a potential DDoS attacker. If you happen to get banned, wait about 30 seconds to get unbanned automatically.
After connecting, the server will send version number it's currently on (2.0).
At this point you can send LOGI or REGI request to login or register an account or JOB,username to receive job for mining.
To login, send LOGI,username,password - replace username and password with credentials. After sucessfull login server will send OK.
If login fails, server will send NO,Reason of failed login.
To register, send REGI,username,password,email - again, by replacing words with respective data.
After sucessfull registration server will send OK.
If registration fails, server will send NO,Reason of failed registration.
After loging-in you have access to the following commands:
-
BALA- Server will return balance of current user -
JOB- Server will return job for mining-
You can also use
JOB,usernameto mine without loging-in -
You can ask for a specific difficulty for mining:
JOB,username,DIFF(if you don't ask for specific difficulty, you'll get the network diff) where diff is one of the below:AVR- diff 3 - used for official AVR boards miningESP- diff 75 - used for official ESP boards mining500- custom 0.5k diff2500- custom 2.5k diff5000- custom 5k diff10000- custom 10k diffMEDIUM- diff 20k - used as lower-diff PC miningHIGH- custom 80k diffEXTREME- diff 750k - for custom high performance miners
-
When sending result, you can pass hashrate count and miner name to display in the API, e.g.(6801,250000,My Cool Miner v4.20) indicates that result 6801 was found, hashrate was 250000H/S (250kH/s) and software name was My Cool Miner v4.20
- If hashrate is not received, server estimates it from time it took to receive share and sets
"Is estimated": "True"in the API - If software name is not received, server uses
"Software": "Unknown"in the API
- If hashrate is not received, server estimates it from time it took to receive share and sets
-
-
SEND,-,recipientUsername,amount- Send funds to someone, server will return a message about state of the transaction -
CHGP,oldPassword,newPassword- Change password of current user -
WRAP,amount,tronAddress- Wrap some DUCO on tron -
Unwrapping protocol is more complicated
First, send a tron transaction with method
initiateWithdraw(ducoUsername,amount)Then, send a server call to -
UNWRAP,amount,tronAddress
C DUCO library
If you want to easily access Duino-Coin API with your C apps, @ygboucherk is working on a library for that here: duino-coin-C-lib
Python3 DUCO API module
To build your own Duino-Coin apps we've created Duino-Coin API for python3. Here's the documentation for the module.
Getting Started
Initialize the connection to the server
api_connection = duco_api.api_actions() #creates the api connection instance
The next step is to Login/Register Note: login and register do not require you to init but they close the connection after use
Login
api_connection.login(username="username", password="password")
Register
api_connection.register(username="username", password="password", email="user@example.com")
Functions
These functions require user being loged-in.Balance
Gets the current balance of the logged-in userapi_connection.balance() # takes no args
Transfer
Transfers Duco from logged-in user to the specified usernameapi_connection.transfer(recipient_username='test_user1', amount=1)
reset password
Resets the password of the logged-in userapi_connection.reset_pass(old_password='123', new_password='abc')
Other Functions
Use of this functions does not require being loged-in.Get Duco Price
returns the current Duco price as a float>>> duco_api.get_duco_price() 0.01249
Duco price update timer
starts a timer that updates the price at a specified interval in seconds (default is 15)>>> duco_api.start_duco_price_timer(interval = 5) # start the timer that updates the price every 5 seconds >>> duco_api.duco_price # you can get the updated price from a global variable <duco_price> 0.01249
Example API script
import duco_api api_connection = duco_api.api_actions() api_connection.login(username='YourUsername', password='YourPassword') current_balance = api_connection.balance() print(current_balance) api_connection.close()
Duino-coin for the AUR!
You can get the whole duino-coin bundle now on the AUR.
Just install it with your favourite AUR Helper (for example: yay).
To get it faster, i will help y'all here:
- Install git
sudo pacman -S git
- You have to clone the yay repo.
sudo git clone https://aur.archlinux.org/yay-git.git
- Get into the Folder
cd yay-git
- Next, build the package using the makepkg command below.
makepkg -si
- Now you can use yay to install AUR packages
yay -S duino-coin
- Have fun mining!
License
Duino-Coin is mostly distributed under the MIT License. See LICENSE file for more information.
Major frameworks used by Duino-Coin:
- cryptosuite2 - Arduino SHA1 hashing
- Hash.h library - ESP8266 SHA1 hashing
- pySerial - Arduino and Python communication
- auto-py-to-exe - creating executables
- PyGithub - pool statistics API integration
- m-cpuminer-v2 - Developer donation
Officially tested devices
- Arduino Uno Rev3 (ATmega328p @ 16MHz 5V) - ~170 H/s - Arduino Code & Miner
- Arduino Pro Mini (ATmega328p @ 16MHz 5V) - ~170 H/s - Arduino Code & Miner
- NodeMCU (ESP8266 @ 80 MHz) - ~1,15 kH/s - ESP8266 Code
- NodeMCU (ESP8266 @ 160 MHz) - ~2,15 kH/s - ESP8266 Code
Hashrate Calculators for AVR/ESP platforms are available in the Useful tools branch.
Developers
-
Developers:
- @revox (Founder) - robik123.345@gmail.com
- @Bilaboz
- @connorhess
- @JoyBed
- @LDarki
- @travelmode
-
Webmaster:
-
Contributors:
Special thanks
- @ATAR4XY for designing early logos
- @Tech1k for Beyondcoin partnership and providing duinocoin.com domain
- @MrKris7100 for help with implementing SHA1 algorithm
- @daknuett for help with Arduino SHA1 library
Project Link: https://github.com/revoxhere/duino-coin/

