67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
# istanbul-tools
|
|
|
|
Genesis extra-data encoder and decoder library for Istanbul consensus.
|
|
|
|
istanbul-tools is used to generate extra-data field of genesis due to extra-data is combined signer vanity with RLP encoded `Istanbul extra data`. The `Istanbul extra data` struct is defined as follows:
|
|
|
|
```go
|
|
type IstanbulExtra struct {
|
|
Validators []common.Address // Validator addresses
|
|
Seal []byte // Proposer seal 65 bytes
|
|
CommittedSeal [][]byte // Committed seal, 65 * len(Validators) bytes
|
|
}
|
|
```
|
|
|
|
Please note: The `Seal`, and `CommittedSeal` is not considered in genesis block.
|
|
|
|
## Getting started
|
|
|
|
```
|
|
$ make istanbul
|
|
$ build/bin/istanbul
|
|
|
|
NAME:
|
|
istanbul - the istanbul-tools command line interface
|
|
|
|
USAGE:
|
|
istanbul [global options] command [command options] [arguments...]
|
|
|
|
COMMANDS:
|
|
decode To decode an Istanbul extraData
|
|
encode To encode an Istanbul extraData
|
|
help, h Shows a list of commands or help for one command
|
|
|
|
GLOBAL OPTIONS:
|
|
--help, -h show help
|
|
|
|
COPYRIGHT:
|
|
Copyright 2017 The Amis Authors
|
|
|
|
```
|
|
|
|
## Example
|
|
|
|
### Encode command
|
|
|
|
Encode the given file to `Encoded Istanbul extra-data`
|
|
```
|
|
$ build/bin/istanbul encode --config ./cmd/istanbul/example/config.toml
|
|
|
|
OUTPUT:
|
|
Encoded Istanbul extra-data: 0x0000000000000000000000000000000000000000000000000000000000000000f89af85494475cc98b5521ab2a1335683e7567c8048bfe79ed9407d8299de61faed3686ba4c4e6c3b9083d7e2371944fe035ce99af680d89e2c4d73aca01dbfc1bd2fd94dc421209441a754f79c4a4ecd2b49c935aad0312b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0
|
|
```
|
|
|
|
### Decode command
|
|
|
|
Decode extraData for the given input
|
|
```
|
|
$ build/bin/istanbul decode --extradata 0x0000000000000000000000000000000000000000000000000000000000000000f89af85494475cc98b5521ab2a1335683e7567c8048bfe79ed9407d8299de61faed3686ba4c4e6c3b9083d7e2371944fe035ce99af680d89e2c4d73aca01dbfc1bd2fd94dc421209441a754f79c4a4ecd2b49c935aad0312b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0
|
|
|
|
OUTPUT:
|
|
vanity: 0x0000000000000000000000000000000000000000000000000000000000000000
|
|
validator: 0x475cc98b5521ab2a1335683e7567c8048bfe79ed
|
|
validator: 0x07d8299de61faed3686ba4c4e6c3b9083d7e2371
|
|
validator: 0x4fe035ce99af680d89e2c4d73aca01dbfc1bd2fd
|
|
validator: 0xdc421209441a754f79c4a4ecd2b49c935aad0312
|
|
seal: 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
``` |