* Manage shard chains as first class citizen
* Bring core.BlockChain's read/write semantics cleaner
* Reimplement the block reward in terms of on-chain committee info, not
hardcoded genesis committee.
utilize go:generate to convert the default wallet.ini file
into go constant `defaultWalletIni` defined in
`cmd/client/wallet/generated_ini.go` which will be used when
`.hmy/wallet.ini` doesn't exist under the current filesystem.
ethereum compatible keystore
support passphrase for wallet new/list/import functions
support export keystore using encrypted json format
Signed-off-by: Leo Chen <leo@harmony.one>
each node will communicate in 3 pubsub topics:
* group, exchange the consensus group messages
* client, exchange the client messages, like transactions
* global, exchange global messages, like cross-shard tx, or communicate
with beacon chain (not enabled for now)
Signed-off-by: Leo Chen <leo@harmony.one>
use an external environment variable to specify the rpc servers
of the wallet. this will greatly simplify the testing.
example of the environment variable:
export RpcNodes="127.0.0.1:8989,192.168.129.1:5555"
Signed-off-by: Leo Chen <leo@harmony.one>
The main problem is the wallet is using p2p for async communication and
it exits too fast before p2p finished the tasks.
So, we added a few seconds waiting in the program and it works fine.
Signed-off-by: Leo Chen <leo@harmony.one>
This is to stay compliant
https://github.com/golang-standards/project-layout/tree/master/cmd, to
quote which:
“Don't put a lot of code in the application directory. If you think the
code can be imported and used in other projects, then it should live in
the /pkg directory. If the code is not reusable or if you don't want
others to reuse it, put that code in the /internal directory.”