Giter VIP home page Giter VIP logo

khipu's Introduction

Khipu: Enterprise Blockchain Platform

Khipu is an enterprise blockchain platform based on Ethereum. It is built on earlier work on Mantis.

The major researches of Khipu so far:

  • Try to execute transactions in a block as in parallel as possible. Average 80% transactions in one block could be executed in parallel currently
  • Kafka based storage engine carefully designed for blockchain with high performance both on random/sequential reading and writing
  • The fastest Ethereum implemention

Status - Beta Release 0.4.x

This version of the code supports

  • Peer discovery
  • Fast sync (download a recent state trie snapshot and all blocks, this is the default behaviour)
  • Regular sync (download and execute every transaction in every block in the chain), this will be enabled once fast sync finished
  • JSON RPC API

Features to be done

  • Reduce disk usage
  • Reduce memory usage
  • CPU mining
  • Execute transactions in parallel in mining
  • Morden testnet and private network
  • Unit tests

Notice

This version's data storage format may be changed before productional release.

During fast sync, sometimes the syncing looks like stopped with no more state nodes or blocks being downloaded. A possible reason that may be the current left handshaked peers could not respond to state nodes or blocks request any more. In case of this, try to stop khipu and restart it again.

Minimum requirements to run Khipu

  • 16G RAM, 500G disk space (SSD is preferred, although HDD is okay)

Installation and Running, Building

The latest release can be downloaded from here

Running from command line:

unzip khipu-eth-x.x.x.zip
cd khipu-eth-x.x.x/bin
./khipu-eth

or

nohup ./khipu-eth &
tail -f nohup

Khipu data directory is $HOME/.khipu.eth

$ ls .khipu.eth
kesque.logs  keystore  nodeId.keys  rocksdb

Remove kesque.logs and rocksdb will level a installation with empty blockchain data, but the keystore and nodeId.keys will be kept.

Prerequisites to build

Build the client

As an alternative to downloading the client, build the client from source.

git clone https://github.com/khipu-io/khipu.git
cd khipu
sbt khipu-eth/dist

or

sbt clean khipu-eth/dist

The packaged zip file could be found at khipu/khipu-eth/target/universal

License

Khipu is licensed under the MIT License (found in the LICENSE file in the root directory).

khipu's People

Contributors

dcaoyuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

khipu's Issues

When should REVERT op refund remaining gas?

The following code:

if (result.isRevert) {
// tx 0xe62a2b4e348e805ec4bddd4dbf9ae9bcf278622ddc5d5a49ff68f8c994e9d36f of block 6020296 got error gasUsed if state.spendGas(-result.gasRemaining), the diff is extractly result.gasRemaining - whose bug?
// but most blocks, such as 6020299 got error gasUsed if not state.spendGas(-result.gasRemaining)
state.spendGas(-result.gasRemaining)
}

refund remaining gas for most transactions, except:

  • Tx 0xe62a2b4e348e805ec4bddd4dbf9ae9bcf278622ddc5d5a49ff68f8c994e9d36f of block 6020296
  • Tx 0x6365b34fdc9c4c8024152d18d32b0df581606dbc114b752b2aa51d7453d23e7c of block 6410554

Where is error from?
Which client software caused?
Which miner caused?
Or, my bug

Fast sync is hard to find nodes and hangs at block 3004252.

Take more than 15 minutes, still cannot connect to other nodes. Is it the network problem?

09:19:20 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:19:20 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 400 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:19:25 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:30 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:35 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:40 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:19:40 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:45 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:50 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:19:55 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:00 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:20:00 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:05 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:10 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:15 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:15 [fast] Saved sync state in 4 ms, best header number: 3004252, bodies queue: 0, receipts queue: 0, nodes queue: 14132, downloaded nodes: 2091792
09:20:20 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:20:20 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:20:25 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:30 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:35 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:40 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:20:40 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:45 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:50 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:20:55 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:21:00 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:21:00 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:21:05 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:21:10 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/0/0/1)
09:21:15 [fast] Saved sync state in 3 ms, best header number: 3004252, bodies queue: 0, receipts queue: 0, nodes queue: 14132, downloaded nodes: 2091792
09:21:15 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/1/0/0)
09:21:20 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:21:20 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (1/1/0/0)
09:21:25 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:30 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:35 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:40 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:21:40 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:45 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:50 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:21:55 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:00 [peer] Discovered 638 nodes (290 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:22:00 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:05 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:10 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:15 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:15 [fast] Saved sync state in 2 ms, best header number: 3004252, bodies queue: 0, receipts queue: 0, nodes queue: 14132, downloaded nodes: 2091792
09:22:20 [peer] Discovered 638 nodes (291 dropped), handshaked 1/30 (in/out): (0/1). Connecting to 29 more nodes.
09:22:20 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:25 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)
09:22:30 [fast] Block: 3004252/6219872, 0/s. State: 2091792/2105924, 0/s, 0 in working. Peers: (in/out) (0/1), (working/good/node/black) (0/0/0/1)

Invalid

不过币价无所谓啊,怎么邓老师代码也不更新了,市场不重要,技术最重要鸭

Receipts storage optimization

Firstly, it does not store information like Transaction hashes and block hashes with every single log entry. Secondly, it does not store bloom filter (256 bytes) with every transaction, but calculates it on the fly from the logs during the RPC request.

See Turbo-Geth

sbt-api-mapping compile error

I have this error when trying to build the client.

$ sbt khipu-eth/dist
[warn] Executing in batch mode.
[warn]   For better performance, hit [ENTER] to switch to interactive mode, or
[warn]   consider launching sbt without any commands, or explicitly passing 'shell'
[info] Loading global plugins from /Users/dudu/.sbt/0.13/plugins
[info] Loading project definition from /Users/dudu/Documents/__git__/khipu-io/khipu/project
coursier.ResolutionException: Encountered 1 error(s) in dependency resolution:
  com.thoughtworks.sbt-api-mappings:sbt-api-mappings;sbtVersion=0.13;scalaVersion=2.10:latest.release:
    not found:
      https://repo.typesafe.com/typesafe/ivy-releases/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
      https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
      /Users/dudu/.ivy2/local/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
      https://repo1.maven.org/maven2/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
      /Users/dudu/.sbt/preloaded/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/latest.release/ivys/ivy.xml
      /Users/dudu/.sbt/preloaded/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
      https://oss.sonatype.org/content/repositories/snapshots/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
[error] (*:coursierResolution) coursier.ResolutionException: Encountered 1 error(s) in dependency resolution:
[error]   com.thoughtworks.sbt-api-mappings:sbt-api-mappings;sbtVersion=0.13;scalaVersion=2.10:latest.release:
[error]     not found:
[error]       https://repo.typesafe.com/typesafe/ivy-releases/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
[error]       https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
[error]       /Users/dudu/.ivy2/local/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/scala_2.10/sbt_0.13/latest.release/ivys/ivy.xml
[error]       https://repo1.maven.org/maven2/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
[error]       /Users/dudu/.sbt/preloaded/com.thoughtworks.sbt-api-mappings/sbt-api-mappings/latest.release/ivys/ivy.xml
[error]       /Users/dudu/.sbt/preloaded/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
[error]       https://oss.sonatype.org/content/repositories/snapshots/com/thoughtworks/sbt-api-mappings/sbt-api-mappings_2.10_0.13/latest.release/sbt-api-mappings-latest.release.pom
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

The workable version for sbt-api-mappings seems to be 1.1.0. So I change to version 1.1.0 in plugins.sbt and the error disappears.

addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % "1.1.0")

Enable compression for kesque

Kafka compression could be applied on betched records, but CompressType.GZIP is too slow, and CompressType.SNAPPY on storage/account table we got very low compression ratio. Here's a result:

Before (at block 6314587):

23G	.khipu.eth/leveldb
459M	.khipu.eth/kesque.logs/receipts_idx-0
664M	.khipu.eth/kesque.logs/evmcode-0
658M	.khipu.eth/kesque.logs/td-0
50G	.khipu.eth/kesque.logs/body-0
3.8G	.khipu.eth/kesque.logs/header-0
9.2G	.khipu.eth/kesque.logs/account-0
459M	.khipu.eth/kesque.logs/td_idx-0
17G	.khipu.eth/kesque.logs/storage-0
39G	.khipu.eth/kesque.logs/receipts-0
949M	.khipu.eth/kesque.logs/account_idx-0
2.4G	.khipu.eth/kesque.logs/storage_idx-0
459M	.khipu.eth/kesque.logs/body_idx-0
14M	.khipu.eth/kesque.logs/evmcode_idx-0
459M	.khipu.eth/kesque.logs/header_idx-0
124G	.khipu.eth/kesque.logs
4.0K	.khipu.eth/keystore
147G	.khipu.eth/

After (at block 6309236):

24G	.khipu.eth/leveldb
459M	.khipu.eth/kesque.logs/td_idx-0
459M	.khipu.eth/kesque.logs/body_idx-0
14M	.khipu.eth/kesque.logs/evmcode_idx-0
38G	.khipu.eth/kesque.logs/receipts-0
50G	.khipu.eth/kesque.logs/body-0
16G	.khipu.eth/kesque.logs/storage-0
6.5G	.khipu.eth/kesque.logs/account-0
2.1G	.khipu.eth/kesque.logs/storage_idx-0
658M	.khipu.eth/kesque.logs/td-0
661M	.khipu.eth/kesque.logs/evmcode-0
3.8G	.khipu.eth/kesque.logs/header-0
821M	.khipu.eth/kesque.logs/account_idx-0
459M	.khipu.eth/kesque.logs/receipts_idx-0
459M	.khipu.eth/kesque.logs/header_idx-0
119G	.khipu.eth/kesque.logs
4.0K	.khipu.eth/keystore
143G	.khipu.eth/

ValidationAfterExecError(7753545,Block 7753545 has invalid gas used, expected 7990477 but got 7656907)

Tx: 0x9751be08e65ce89c69bd029ac63fbc4d4e9175bbfc6c8a40b652ca5842cab04a

Gas used in etherscan.io: 394,786
Tx in etherscan

Gas used in khipu: 61,216
Trace log: nohup.txt

The difference is around CREATE2, where, geth says Out Of Gas and consumer all gas remaining (333,570) at REVERT, but khipu think there is enough gas for CREATE2 and no error found thus the gas remaining REVERT should be returned.

Receipt's intermediate state root not correct before eip-658.

Which causes receipts hash error. Example: first transaction block: 46147, tx hash: 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060

Following is the account updating during this tx:

after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 0, balance: 1998950000000000000000, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998950000000000000000, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0x5df9b87991262f6ba471f09758cde1c0fc1de734 -> Updated(Account(nonce: 0, balance: 31337, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0x5df9b87991262f6ba471f09758cde1c0fc1de734 -> Updated(Account(nonce: 0, balance: 31337, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
before flush: 691fc4f4d21d10787902e8f3266711f1d640e75fedbeb406dc0b8d3096128436, Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0x5df9b87991262f6ba471f09758cde1c0fc1de734 -> Updated(Account(nonce: 0, balance: 31337, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after flush: 79d3d10759131e6e830620aa3cda92d2b59a788e2fe78d6db18daf362e7f6aa0

Tx 5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060 121,-45,-47,7,89,19,30,110,-125,6,32,-86,60,-38,-110,-46,-75,-102,120,-114,47,-25,-115,109,-79,-115,-81,54,46,127,106,-96, 
Receipt{
 79d3d10759131e6e830620aa3cda92d2b59a788e2fe78d6db18daf362e7f6aa0
 cumulativeGasUsed: 21000
 logsBloomFilter: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 logs: Vector()
}
      

The state of receipt is not correct.

But the final state root of block is correct:

after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0x5df9b87991262f6ba471f09758cde1c0fc1de734 -> Updated(Account(nonce: 0, balance: 31337, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0xe6a7a1d47ff21b6321162aea7c6cb457d5476bca -> Updated(Account(nonce: 0, balance: 4488393750000000000000, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
after save: Map(0xa1e4380a3b1f749673e270229993ee55f35663b4 -> Updated(Account(nonce: 1, balance: 1998949999999999968663, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0x5df9b87991262f6ba471f09758cde1c0fc1de734 -> Updated(Account(nonce: 0, balance: 31337, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)), 0xe6a7a1d47ff21b6321162aea7c6cb457d5476bca -> Updated(Account(nonce: 0, balance: 4493393750000000000000, stateRoot: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421, codeHash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470)))
before flush: 0e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169, Map()
after flush: 0e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169
01:47:38 Failed to execute mined block because of ValidationAfterExecError(46147,BlockReceiptsHashError)
01:47:38 [sync] Execution error ValidationAfterExecError(46147,BlockReceiptsHashError), in block 46147

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.