Official Go implementation of the DRKChain protocol.
For prerequisites and detailed build instructions please read the Installation Instructions below.
(You can use Linux/Unix servers of DigitalOcean, AWS, etc.)
Update package manager and install git
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install git
Clone the repository to a directory of your choosing:
git clone https://github.com/DRKtechnology/DRKChain.git
Install latest distribution of Go if you don't have it already. You can refer to below document guide to install Go on Ubuntu 18.04
https://github.com/golang/go/wiki/Ubuntu
Building drkchain requires both a Go (version 1.10 or later) and a C compiler. You can install
them using your favourite package manager.
sudo apt-get install -y build-essential
Once the dependencies are installed. Finally, build the drkchain program using the following command.
cd DRKChain
make drkchainor, to build the full suite of utilities:
make allYou can now run build/bin/drkchain to start your node.
Going through all the possible command line flags is out of scope here,
but we've enumerated a few common parameter combos to get you up to speed quickly
on how you can run your own drkchain instance.
Create an drkchain account to sign the block for the validator
./build/bin/drkchain account new
It will promtly you to input password for the new account. And take node that Your new account is locked with a password. Please give a password. Do not forget this password.. For example, we input 123456 as password.
After you input matched password and repeat password of 123456, a new account was generated something like following
Your new key was generated
Public address of the key: e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb
Path of the secret key file: /root/.drkchain/keystore/UTC--2019-11-05T15-46-35.685344950Z--e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb
- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!
To unlock account in the cli for signing, we will firstly write out the account password above into a file named passwd by running echo 123456 > passwd then passing the passwd file name into --password option to run validator node as below.
Run node as validator with --mine cli option as below, we also need to unlock the etherbase account with password. For instance, we run validator node with account e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb
nohup ./build/bin/drkchain --mine --unlock e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb --password passwd --etherbase e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb
Then come to drkchain validator dapp to deposit and register validator with coinbase of e94d5a92aeacaff99fe1ab6988ddb3e66c9fd4eb that we unlock on above.
By far the most common scenario is people wanting to simply interact with the DRKChain network: create accounts; transfer funds; deploy and interact with contracts. For this particular use-case the user doesn't care about years-old historical data, so we can fast-sync quickly to the current state of the network. To do so:
$ drkchain consoleThis command will:
- Start
drkchainin fast sync mode (default, can be changed with the--syncmodeflag), causing it to download more data in exchange for avoiding processing the entire history of the DRKChain network, which is very CPU intensive. - Start up
drkchain's built-in interactiveJavaScript console, (via the trailingconsolesubcommand) through which you can invoke all officialweb3methods as well asdrkchain's ownmanagement APIs. This tool is optional and if you leave it out you can always attach to an already runningdrkchaininstance withdrkchain attach.
As a developer, sooner rather than later you'll want to start interacting with drkchain and the
DRKChain network via your own programs and not manually through the console. To aid
this, drkchain has built-in support for a JSON-RPC based APIs.
These can be exposed via HTTP, WebSockets and IPC (UNIX sockets on UNIX based
platforms, and named pipes on Windows).
The IPC interface is enabled by default and exposes all the APIs supported by drkchain,
whereas the HTTP and WS interfaces need to manually be enabled and only expose a
subset of APIs due to security reasons. These can be turned on/off and configured as
you'd expect.
HTTP based JSON-RPC API options:
--rpcEnable the HTTP-RPC server--rpcaddrHTTP-RPC server listening interface (default:localhost)--rpcportHTTP-RPC server listening port (default:8545)--rpcapiAPI's offered over the HTTP-RPC interface (default:eth,net,web3)--rpccorsdomainComma separated list of domains from which to accept cross origin requests (browser enforced)--wsEnable the WS-RPC server--wsaddrWS-RPC server listening interface (default:localhost)--wsportWS-RPC server listening port (default:8546)--wsapiAPI's offered over the WS-RPC interface (default:eth,net,web3)--wsoriginsOrigins from which to accept websockets requests--ipcdisableDisable the IPC-RPC server--ipcapiAPI's offered over the IPC-RPC interface (default:admin,debug,eth,miner,net,personal,shh,txpool,web3)--ipcpathFilename for IPC socket/pipe within the datadir (explicit paths escape it)
You'll need to use your own programming environments' capabilities (libraries, tools, etc) to
connect via HTTP, WS or IPC to a drkchain node configured with the above flags and you'll
need to speak JSON-RPC on all transports. You can reuse the same connection for multiple requests!
Note: Please understand the security implications of opening up an HTTP/WS based transport before doing so! Hackers on the internet are actively trying to subvert drkchain nodes with exposed APIs! Further, all browser tabs can access locally running web servers, so malicious web pages could try to subvert locally available APIs!