Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ticket共识,节点有票,高度无法增长,log日志出现ErrBlockHashNoMatch #59

Closed
chaojieli opened this issue Nov 20, 2018 · 13 comments

Comments

@chaojieli
Copy link

故障描述:测试节点日志错误如下

日志:

t=2018-11-20T10:08:02+0800 lvl=info msg=EventAddBlockDetail module=blockchain height=32298 hash=2565eb1ebea289c65e11e0d15834766e6421de8af825ddf03b6e3378ecc9c7a9
t=2018-11-20T10:08:02+0800 lvl=eror msg="addBlockDetail parent hash no match" module=blockchain err=ErrBlockHashNoMatch bestHash=0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e blockHash=0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa
addBlock=true height=32298
t=2018-11-20T10:08:02+0800 lvl=eror msg=addBlockDetail module=blockchain err=ErrBlockHashNoMatch


使用cli查询结果,blockHash和bestHash查询的节点block一致
root@ubuntu055-2:/home/lcj2# ./chain33-cli block view -s 0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e
{
"head":

{ "version": 0, "parentHash": "0xedf7213e03f98c69d700c10f3cc76b90417024d8d202c855b77add499a049188", "txHash": "0xf27e9046164a513467c48b609706d53d9a792d760fc36fc65b2a95adddc7c87d", "stateHash": "0x591874e1fda2e250f20a5a89897c23060e2e5fdf8170faab0376c16a5f01240b", "height": 32297, "blockTime": 1542620076, "txCount": 4, "hash": "0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa", "difficulty": 505287814 }
,
"txCount": 4,
"txHashes": [
"0x35eccb79dcf12f940990621e401aaefc7a523e7eedee7b183032b7f55147d073",
"0xfcf014282ed95209393b943230e64483dd0906761a9e7f2b98754c2ce0fb4160",
"0xdc76081b95e5b27544927128864bbbb9b3cba92f6d15f6390f5eda6750859e3c",
"0x932de9bd54a49990ebfdc11b13ff13bcf25e53f2cbff5739a60af6d348c5e545"
]
}


root@ubuntu055-2:/home/lcj2# ./chain33-cli block view -s 0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa
{
"head":

{ "version": 0, "parentHash": "0xedf7213e03f98c69d700c10f3cc76b90417024d8d202c855b77add499a049188", "txHash": "0xf27e9046164a513467c48b609706d53d9a792d760fc36fc65b2a95adddc7c87d", "stateHash": "0x591874e1fda2e250f20a5a89897c23060e2e5fdf8170faab0376c16a5f01240b", "height": 32297, "blockTime": 1542620076, "txCount": 4, "hash": "0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa", "difficulty": 505287814 }
,
"txCount": 4,
"txHashes": [
"0x35eccb79dcf12f940990621e401aaefc7a523e7eedee7b183032b7f55147d073",
"0xfcf014282ed95209393b943230e64483dd0906761a9e7f2b98754c2ce0fb4160",
"0xdc76081b95e5b27544927128864bbbb9b3cba92f6d15f6390f5eda6750859e3c",
"0x932de9bd54a49990ebfdc11b13ff13bcf25e53f2cbff5739a60af6d348c5e545"
]
}

@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

@icehawk-hyb 你来看一下

@vipwzw vipwzw added the bug label Nov 20, 2018
@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

提供一下配置文件 @chaojieli 还有压缩一下log 可以上传部分故障的log

@icehawk-hyb
Copy link
Contributor

是由于计算block hash不一致导致的。应该是这个ForkBlockHash fork高度有问题。
没有包含StateHash 时计算的block hash 0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e
包含StateHash 时计算的block hash 0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa
@chaojieli @vipwzw @niniwzw

@chaojieli
Copy link
Author

chaojieli commented Nov 20, 2018

@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

看配置文件,我看你是在本地搭一个测试链吗?
如果是本地搭测试链,P2P 的version 要做一个修改,参考这个。 @ #51

@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

version=388
verMix=388
verMax=389
#seeds=[]
seeds=["172.16.103.14:13802","172.16.103.15:13802","172.16.103.16:13802","172.16.103.17:13802","172.16.103.18:13802"]

自己配置version 和 seed 否则会和 测试链混起来。

@vipwzw vipwzw added help wanted and removed bug labels Nov 20, 2018
@chaojieli
Copy link
Author

chaojieli commented Nov 20, 2018

目前我单个节点,sync显示已同步,高度已不增长,log出现err,能解决么 @vipwzw
root@ubuntu055-2:/home/lcj2# ./chain33-cli net is_sync
true
root@ubuntu055-2:/home/lcj2# ./chain33-cli ticket count
31544


root@ubuntu055-2:/home/lcj2# tail -f logs/chain33.log |grep err
t=2018-11-20T15:39:32+0800 lvl=eror msg="addBlockDetail parent hash no match" module=blockchain err=ErrBlockHashNoMatch bestHash=0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e blockHash=0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa addBlock=true height=32298
t=2018-11-20T15:39:32+0800 lvl=eror msg=addBlockDetail module=blockchain err=ErrBlockHashNoMatch
t=2018-11-20T15:39:33+0800 lvl=eror msg="addBlockDetail parent hash no match" module=blockchain err=ErrBlockHashNoMatch bestHash=0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e blockHash=0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa addBlock=true height=32298
t=2018-11-20T15:39:33+0800 lvl=eror msg=addBlockDetail module=blockchain err=ErrBlockHashNoMatch
t=2018-11-20T15:39:41+0800 lvl=eror msg="addBlockDetail parent hash no match" module=blockchain err=ErrBlockHashNoMatch bestHash=0xe74be80d69c0417ea0ca4d4838e0b4796afe69105bf84772249460f1094df89e blockHash=0x23a5f9e834488c0884ceb7fffed6ee4e6f14e35eb495db4c5f7c7e5aca109caa addBlock=true height=32298

@chaojieli
Copy link
Author

chaojieli commented Nov 20, 2018

Title="local"
TestNet=true
FixTime=false

[log]
loglevel = "debug"
logConsoleLevel = "info"
logFile = "logs/chain33.log"
maxFileSize = 300
maxBackups = 100
maxAge = 28
localTime = true
compress = true
callerFile = false
callerFunction = false

[blockchain]
defCacheSize=128
maxFetchBlockNum=128
timeoutSeconds=5
batchBlockNum=128
driver="leveldb"
dbPath="datadir"
dbCache=64
isStrongConsistency=false
singleMode=true
batchsync=false
isRecordBlockSequence=true
isParaChain=false
enableTxQuickIndex=false

[p2p]
version=289
verMix=288
verMax=289
seeds=[]
enable=true
isSeed=true
serverStart=true
innerSeedEnable=false
useGithub=false
innerBounds=300
msgCacheSize=10240
driver="leveldb"
dbPath="datadir/addrbook"
dbCache=4
grpcLogFile="grpc33.log"

[rpc]
jrpcBindAddr=":8801"
grpcBindAddr=":8802"

whitelist=[""]
jrpcFuncWhitelist=["
"]
grpcFuncWhitelist=["*"]

[mempool]
poolCacheSize=10240
minTxFee=100000
maxTxNumPerAccount=10000

[consensus]
name="ticket"
minerstart=true

[store]
name="mavl"
driver="leveldb"
dbPath="datadir/mavltree"
dbCache=128

[wallet]
minFee=100000
driver="leveldb"
dbPath="wallet"
dbCache=16
signType="secp256k1"
minerdisable=false
minerwhitelist=["*"]

[exec]
isFree=false
minExecFee=100000
enableStat=false
enableMVCC=false

[auth]
enable=false
cryptoPath="authdir/crypto"
signType="auth_ecdsa"

@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

@andyYuanFZM 你测试一下这个情况

@vipwzw
Copy link
Collaborator

vipwzw commented Nov 20, 2018

看上去你的配置文件有点老。可以考虑我的这个配置文件

Title="local"
TestNet=true
FixTime=false


[log]
# 日志级别,支持debug(dbug)/info/warn/error(eror)/crit
loglevel = "debug"
logConsoleLevel = "info"
# 日志文件名,可带目录,所有生成的日志文件都放到此目录下
logFile = "logs/chain33.log"
# 单个日志文件的最大值(单位:兆)
maxFileSize = 300
# 最多保存的历史日志文件个数
maxBackups = 100
# 最多保存的历史日志消息(单位:天)
maxAge = 28
# 日志文件名是否使用本地事件(否则使用UTC时间)
localTime = true
# 历史日志文件是否压缩(压缩格式为gz)
compress = true
# 是否打印调用源文件和行号
callerFile = false
# 是否打印调用方法
callerFunction = false

[blockchain]
defCacheSize=128
maxFetchBlockNum=128
timeoutSeconds=5
batchBlockNum=128
driver="leveldb"
dbPath="datadir"
dbCache=64
isStrongConsistency=false
singleMode=false
batchsync=false
isRecordBlockSequence=true
isParaChain=false
enableTxQuickIndex=false

[p2p]
version=555
verMix=555
verMax=556
seeds=[]
enable=true
isSeed=false
serverStart=true
innerSeedEnable=true
useGithub=true
innerBounds=300
msgCacheSize=10240
driver="leveldb"
dbPath="datadir/addrbook"
dbCache=4
grpcLogFile="grpc33.log"

[rpc]
jrpcBindAddr="localhost:8801"
grpcBindAddr="localhost:8802"
whitelist=["127.0.0.1"]
jrpcFuncWhitelist=["*"]
grpcFuncWhitelist=["*"]

[mempool]
poolCacheSize=10240
minTxFee=100000
maxTxNumPerAccount=10000

[consensus]
name="ticket"
minerstart=true
genesisBlockTime=1514533394
genesis="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"

[mver.consensus]
fundKeyAddr = "1BQXS6TxaYYG5mADaWij4AxhZZUTpw95a5"
coinReward = 18
coinDevFund = 12
ticketPrice = 10000
powLimitBits = "0x1f00ffff"
retargetAdjustmentFactor = 4
futureBlockTime = 16
ticketFrozenTime = 5    #5s only for test
ticketWithdrawTime = 10 #10s only for test
ticketMinerWaitTime = 2 #2s only for test
maxTxNumber = 1600      #160
targetTimespan = 2304
targetTimePerBlock = 16

[mver.consensus.ForkChainParamV1]
futureBlockTime = 15
ticketFrozenTime = 43200
ticketWithdrawTime = 172800
ticketMinerWaitTime = 7200
maxTxNumber = 1500
targetTimespan = 2160
targetTimePerBlock = 15

[mver.consensus.ForkChainParamV2]
powLimitBits = "0x1f2fffff"

[consensus.sub.ticket]
genesisBlockTime=1514533394
[[consensus.sub.ticket.genesis]]
minerAddr="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
returnAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
count=10000

[[consensus.sub.ticket.genesis]]
minerAddr="1PUiGcbsccfxW3zuvHXZBJfznziph5miAo"
returnAddr="1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF"
count=10000

[[consensus.sub.ticket.genesis]]
minerAddr="1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX"
returnAddr="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
count=10000

[store]
name="mavl"
driver="leveldb"
dbPath="datadir/mavltree"
dbCache=128

[store.sub.mavl]
enableMavlPrefix=false
enableMVCC=false
enableMavlPrune=false
pruneHeight=10000

[wallet]
minFee=100000
driver="leveldb"
dbPath="wallet"
dbCache=16
signType="secp256k1"

[wallet.sub.ticket]
minerdisable=false
minerwhitelist=["*"]

[exec]
isFree=false
minExecFee=100000
enableStat=false
enableMVCC=false
alias=["token1:token","token2:token","token3:token"]

[exec.sub.token]
saveTokenTxList=true
tokenApprs = [
	"1Bsg9j6gW83sShoee1fZAt9TkUjcrCgA9S",
	"1Q8hGLfoGe63efeWa8fJ4Pnukhkngt6poK",
	"1LY8GFia5EiyoTodMLfkB5PHNNpXRqxhyB",
	"1GCzJDS6HbgTQ2emade7mEJGGWFfA15pS9",
	"1JYB8sxi4He5pZWHCd3Zi2nypQ4JMB6AxN",
	"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv",
]

[exec.sub.cert]
# 是否启用证书验证和签名
enable=false
# 加密文件路径
cryptoPath="authdir/crypto"
# 带证书签名类型,支持"auth_ecdsa", "auth_sm2"
signType="auth_ecdsa"

[exec.sub.relay]
genesis="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"

[exec.sub.manage]
superManager=[
    "1Bsg9j6gW83sShoee1fZAt9TkUjcrCgA9S", 
    "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv", 
    "1Q8hGLfoGe63efeWa8fJ4Pnukhkngt6poK"
]

@andyYuanFZM
Copy link
Collaborator

@jixingwei @caopingcp @chaojieli 这个代码是上个月的,有点老。 我们先分析一下日志,如果没有结论的话,再用新的代码和配置文件跑下看能不能再复现。

@caopingcp
Copy link
Contributor

日志中显示前后两次运行 Chain33,配置项 Title 由 "chain33" 变为 “local”,此时 “ForkBlockHash” 发生变化,导致 block hash 计算不一致 @chaojieli @vipwzw @andyYuanFZM

@andyYuanFZM
Copy link
Collaborator

好的,那跟hyb分析结论是一致的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants