iost-official / go-iost

Official Go implementation of the IOST blockchain
https://developers.iost.io/
GNU Lesser General Public License v3.0
564 stars 112 forks source link

Improvement Plans #1171

Open lispc opened 3 years ago

lispc commented 3 years ago
  1. change token contract version to 0.0.3 and delete used old codes?
  2. ==== 3.10.0 ====
  3. dump and analyse p2p connection graph?
  4. add eth address
  5. auto generate golang vm function bindings for v8, or use rogchap/v8go
  6. iwallet auto ed25519 to secp256k1 conversion
  7. eth address call back?
  8. metamask and hardware support(transfer only)?
  9. evm support?
  10. ==== 3.11.0 ====
  11. download regenisis tar by default
  12. run multi validator in one iserver process. Add non-validator mode.
  13. add mainnet config files and scripts to this repo
  14. improve server start UX. like iserver --mainnet / iserver --localnet. Automatically create the config folder if not exists yet. Add cmd options like --config / --datadir
  15. ==== 3.12.0 ====
  16. add tool to import/replay blocks
  17. Allow go install ... to install iserver
  18. use embedded build info
  19. ==== 4.x.x ====
  20. use more common notion like "validator" / "stake" / "statedb". change 'NORMAL' to 'VALIDATOR'. 'finalized'
  21. panic when disk is full, auto recovery after disk full: "cannot parse invalid wire-format data"
  22. allow set height(fork) for --try_tx
  23. Check port open / CPU freq / key register for validator
  24. better NFT interface?
  25. official iost domain name service. "xx.ins"
  26. add WitnessBlock { block, reads, writes } to allow stateless execution(for vm upgrade testing) and diff sync
  27. snapshot state at a block number during running
  28. more robust p2p and consensus test? use libp2p dht?
  29. Make v8vm version consistent in MacOS and Linux. Currently Linux uses v8 v7.0 while MacOS uses v8 v6.5. This inconsistency incurs some serious bugs in the past.
  30. Support arm64 as a development environment, such as Apple silicon, Huawei kunpeng and Amazon graviton. NOTICE: support arm64 as a deployment environment may be quite difficult due to some float computation inconsistency, i guess
  31. https://github.com/iost-official/go-iost/blob/aa2ea6f098016bbd7a7f9f48b1172d91627db45f/vm/v8vm/v8/Makefile#L48 installs libs into sys dir. Can this be avoided? no easy way. Better don't use dylib.
  32. k8s test https://github.com/iost-official/iost-k8s-test not works anymore seems due to docker/k8s recent upgrade.
  33. node should cache failed tx reasons for a while (but don't broadcast thems). better err msg than 'tx not found' https://github.com/iost-official/go-iost/blob/77051a737466565ab405588eec0264308e07ba84/verifier/executor.go#L160. check signature in rpc level. Enable TryTx
  34. Some users experienced very long time to rejoin p2p network https://github.com/iost-official/go-iost/issues/1169. My first guess is that they may not persistent and load p2p routing table correctly. Maybe more log is helpful. We may need to add more public seeding p2p nodes.
  35. address <-> account <-> smart contract wallet. ETH address?
  36. use whitelist js features, so future v8vm upgrade will not introduce new dangerous features.
  37. punish node who do not open 30000 p2p port
  38. add randomness to improve consensus safety
  39. add circom golang contract verifier
  40. write base.iost in golang to speedup sync
  41. rewrite js crypto object to contract call
  42. add more p2p seed nodes in default config file. We need to tool to dump the whole p2p network nodes.
  43. store account keypair type(ed25519/secp256k1) on chain? We can use zkp to connect ed25519 pubkey to secp256k1 pubkey. disable ed25519 first? use a zkp smart contract to store pubkey mapping
  44. ctrl c sometimes not worked
  45. refactor POB code. make a formal verification. fuzz test.
  46. add state root and receipt root to block header. or use "diffhash" to check consistency?
  47. add log rotation
  48. check js contracts are correctly JITed
  49. check disk size after every block flush. panic early when less than 1G free disk available
  50. update server process into three process: 1 network/consensus/sidecar/p2p 2 kvdb/state/data/history 3 exec/vm/stateless
  51. re-write validator committee rotation to solidity or golfing?