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

Multiview with portal #880

Merged
merged 198 commits into from Apr 29, 2020
Merged
Show file tree
Hide file tree
Changes from 196 commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
aa9fdf8
init
0xkumi Feb 10, 2020
4e6d83a
add process for shard, beacon
0xkumi Feb 10, 2020
ad43ad1
update logic multiple shard
0xkumi Feb 10, 2020
0a44778
add logic trigger sync
0xkumi Feb 11, 2020
cd3f9f8
update interface
0xkumi Feb 11, 2020
996f79b
update
0xkumi Feb 12, 2020
b1c6554
sync s2b & cross shard trigger logic
0xkumi Feb 13, 2020
f0abac9
update
0xkumi Feb 13, 2020
b751cc9
update
0xkumi Feb 13, 2020
1ed52e2
add s2b && crosshard retriever via channel logic
0xkumi Feb 14, 2020
0882601
add note todo
0xkumi Feb 14, 2020
7c233a1
update
0xkumi Feb 17, 2020
30c449a
Merge remote-tracking branch 'origin/dev/master' into dev/new_syncker
0xkumi Feb 17, 2020
f84bdbe
refactor consensus
0xkumi Feb 18, 2020
d28a063
allow old syncker
0xkumi Feb 19, 2020
2ead2f9
Merge remote-tracking branch 'origin/master' into dev/new_syncker
0xkumi Feb 19, 2020
7593146
update
0xkumi Feb 19, 2020
4aa8921
Merge remote-tracking branch 'origin/dev/master' into dev/new_syncker
0xkumi Feb 19, 2020
842f56d
update
0xkumi Feb 19, 2020
51d2697
update
0xkumi Feb 20, 2020
c3ada7d
update
0xkumi Feb 20, 2020
9d86701
Merge remote-tracking branch 'origin/hw-v2-stream' into dev/new_syncker
Feb 20, 2020
dc39741
integrate stream for beacon
0xkumi Feb 21, 2020
a98bbca
update
0xkumi Feb 21, 2020
b08cd0a
update logic
0xkumi Feb 21, 2020
3df4b17
Merge remote-tracking branch 'origin/hw-v2-stream' into dev/new-synck…
Feb 26, 2020
a513a58
update sync shard
Feb 26, 2020
cc8a015
add blk pool
0xkumi Feb 27, 2020
858ee93
add insert from pool for beacon & shard
0xkumi Feb 27, 2020
5aa81ba
add shard2beacon sync logic
Feb 28, 2020
19c8bfe
remove old syncker, refactor new syncker
0xkumi Feb 28, 2020
41fb907
remove debug code
0xkumi Feb 28, 2020
a020fc5
update
0xkumi Feb 28, 2020
8ce3ed6
update
0xkumi Feb 28, 2020
2d97716
add crossshard logic
0xkumi Mar 2, 2020
388b19d
Merge remote-tracking branch 'origin/dev/master' into dev/new-syncker…
0xkumi Mar 2, 2020
2aa9587
update pubsub
Mar 2, 2020
bd92d31
start blockgen
Mar 2, 2020
f2276ae
update request crossshard
0xkumi Mar 3, 2020
128cfc7
add log
Mar 3, 2020
eeb5998
update stream crossshard
Mar 3, 2020
b511364
update get crossshard block for producer & validator
Mar 3, 2020
a0d0a9b
refactor name
0xkumi Mar 4, 2020
d933683
expose syncker method
0xkumi Mar 4, 2020
0c61eb2
add comment
0xkumi Mar 4, 2020
befa44d
Merge remote-tracking branch 'origin/dev/master' into dev/new-syncker…
0xkumi Mar 4, 2020
a519c32
refactor getbeststate
Mar 9, 2020
7f208a9
Merge remote-tracking branch 'origin/dev/master' into dev/master-upda…
Mar 9, 2020
d4ab39b
set blockchainObj into monitor
0xkumi Mar 9, 2020
835ac5a
add multiview
0xkumi Mar 9, 2020
68da3d2
update
Mar 9, 2020
8286374
Merge remote-tracking branch 'origin/dev/master-update-getchainbestst…
0xkumi Mar 9, 2020
2597ac0
remove revert
0xkumi Mar 9, 2020
3a1801f
multiview beacon
0xkumi Mar 9, 2020
b737a7e
multiview shard
0xkumi Mar 9, 2020
e16ccab
Merge branch 'dev/new-syncker-with-stream' into dev/multiview
0xkumi Mar 9, 2020
1df90e3
update
0xkumi Mar 9, 2020
49ba535
Merge branch 'dev/multiview-newsyncker' into dev/multiview
0xkumi Mar 9, 2020
ed52cce
remove blockchain Chain fields
0xkumi Mar 9, 2020
45dbd72
remove outdated info
0xkumi Mar 9, 2020
0826846
update
Mar 10, 2020
1d71ce9
add sync S2B & CRS for validator
Mar 10, 2020
5aed227
run consensusv2
0xkumi Mar 10, 2020
0ce4dd2
Merge remote-tracking branch 'origin/dev/master' into dev/multiview-n…
Mar 10, 2020
64133a3
beacon consensus v2
Mar 10, 2020
5b6fe6d
shard consensusv2
Mar 11, 2020
86cd885
Merge branch 'dev/multiview-newconsensus' into dev/multiview
Mar 11, 2020
3f50f3d
udpate
Mar 11, 2020
5296e51
add sync missing beaconblk when preSign shard block
Mar 11, 2020
101fc20
remove beacon best state lock
0xkumi Mar 11, 2020
d243f08
fix bug get s2b
0xkumi Mar 11, 2020
114ef02
shard confirm beacon final view
0xkumi Mar 11, 2020
9f167d3
move proposer into header field
0xkumi Mar 11, 2020
2e1d126
add common block validation
Mar 12, 2020
6d11b3d
update
0xkumi Mar 12, 2020
629137e
first merge
0xkumi Mar 12, 2020
6a8b410
second merge
0xkumi Mar 12, 2020
198d44c
roothash: update
0xmerman Mar 13, 2020
1e93706
Merge remote-tracking branch 'origin/dev/multiview-newdb' into dev/mu…
0xmerman Mar 13, 2020
4d8f460
udpate
0xkumi Mar 13, 2020
6381e6e
add crossshard info => easier to get later
0xkumi Mar 13, 2020
16f2106
fix minor bug
0xkumi Mar 13, 2020
71ae0cb
rawdb: support view function
0xmerman Mar 13, 2020
a435302
Merge remote-tracking branch 'origin/dev/multiview-newdb' into dev/mu…
0xmerman Mar 13, 2020
5b870cc
rawdb: udpate view method
0xmerman Mar 13, 2020
35d1a75
blockchain: add block accessor for multiview
0xmerman Mar 16, 2020
d48cfa5
update
0xkumi Mar 16, 2020
d50594d
update
Mar 18, 2020
4478799
Merge branch 'dev/multiview-refactorview' into dev/multiview-newdb
Mar 18, 2020
d8f0ab6
add beacon v2
Mar 18, 2020
8eea3db
fix duplicate
Mar 18, 2020
e912fdb
Update syncker and consensus engine for relay node
Mar 18, 2020
f5c8fed
rollback
Mar 18, 2020
cf965c3
rollback time sleep
Mar 18, 2020
d1388fc
make validation to be independent
Mar 18, 2020
1524c59
Merge branch 'dev/multiview-newdb-synker' into dev/multiview-newdb
Mar 18, 2020
fbf7d16
refactor v1
Mar 19, 2020
5e2490e
add shard producer, preSign, insert logic
Mar 19, 2020
47707e5
validate producer sig using proposer pk
Mar 19, 2020
7bee749
fix bug shardproducer
Mar 19, 2020
fb72f82
fix bug wrong producer + check epoch
Mar 19, 2020
2fea6b7
fix propose time
Mar 21, 2020
1dc72bc
add lock when insert
Mar 21, 2020
b11ef0e
refactor
Mar 21, 2020
b53579f
fix bug
Mar 21, 2020
9879477
revert to old flow & refactor blockgen
Mar 25, 2020
3b10f2d
refactor validation
Mar 25, 2020
eacd343
refactor proposerIndex
Mar 25, 2020
bd0f938
add cache for base58
Mar 25, 2020
b7d91da
Add sync from peer
Mar 26, 2020
293f90a
update curview for v2
Mar 26, 2020
e8eb31c
Support sync from peer, sync by hash
Mar 26, 2020
1d44a6f
pass curview when verify
Mar 26, 2020
85d0515
clean code
Mar 26, 2020
8fb55ae
refactor: metadata, transaction get data by view
0xmerman Mar 26, 2020
4057240
Remove hard code and update request by hash
Mar 26, 2020
d11cd4e
refactor: update mempool validate tx by specific shard/beacon view
0xmerman Mar 26, 2020
d90959d
tx: build bridge, pdex tx with current shard view
0xmerman Mar 26, 2020
3457052
refactor beacon view usage
Mar 27, 2020
87599c9
Merge remote-tracking branch 'origin/dev/master-db-v2' into dev/multi…
Mar 27, 2020
eb5b7d2
fix
Mar 27, 2020
d884ee5
refactor
Mar 27, 2020
5d51460
Set peerID of message for sync procession
Mar 27, 2020
0e3d328
Merge remote-tracking branch 'origin/dev/master-db-v2' into dev/multi…
Apr 1, 2020
8853f96
fix merge
Apr 1, 2020
e5c0161
Merge remote-tracking branch 'origin/dev/multiview-newdb-synker' into…
Apr 1, 2020
3b502eb
Update synker shard and shard to beacon
Apr 1, 2020
0f8a812
Merge remote-tracking branch 'origin/dev/multiview-newdb-synker' into…
Apr 1, 2020
25ee81d
fix update s2b peer state
Apr 1, 2020
ae55b49
sync crossshard by hash
Apr 1, 2020
894cffc
sync s2b by hash
Apr 1, 2020
97447a3
fix sync crossshard by hash
Apr 1, 2020
7103804
add sync missing block logic when validate
Apr 1, 2020
560ca61
add TODO
Apr 1, 2020
992f96f
allow insert into any view, & check view if exited logic
Apr 3, 2020
9412e12
not get view behind final view
Apr 3, 2020
63f9f1d
fix nil pointer
Apr 3, 2020
4cac621
optimize sync speed
Apr 4, 2020
10a3210
Add RPC pool Info
Apr 6, 2020
cc4c813
pass beacon final view
Apr 6, 2020
3d40216
Merge branch 'dev/master-db-v2' into dev/multiview-newdb
Apr 7, 2020
505586e
refactor shouldValidate param
Apr 8, 2020
a31aa35
fix nil pointer
Apr 9, 2020
f2e06e2
Merge branch 'dev/master-db-v2' into dev/multiview-newdb
Apr 9, 2020
9d3603a
Merge remote-tracking branch 'origin/dev/master-db-v2' into dev/multi…
Apr 10, 2020
798e7b9
fix
Apr 10, 2020
34c2e21
remove stream log
Apr 10, 2020
ec829aa
hotfix: append bug
0xmerman Apr 10, 2020
8870594
Merge remote-tracking branch 'origin/dev/master-db-v2' into dev/multi…
Apr 13, 2020
878d9d6
Merge remote-tracking branch 'origin/dev/multiview-newdb-synker' into…
Apr 13, 2020
cdd9a52
refactor clean outdated block in pool
Apr 13, 2020
6566609
optimize store process confirm crossshard
Apr 10, 2020
0489212
remove outdated block
Apr 13, 2020
57876a8
clean
Apr 13, 2020
fb94e50
remove crossShardPool & clean
Apr 13, 2020
8092231
remove prehash
Apr 13, 2020
7acef11
hotfix: race condition bug
0xmerman Apr 13, 2020
b28467b
Merge remote-tracking branch 'origin/dev/multiview-newdb' into dev/mu…
0xmerman Apr 13, 2020
7090aa6
hotfix: avoid race condition
0xmerman Apr 13, 2020
5b74aa9
fix load bestview from shard for validate tx
Apr 13, 2020
ac28212
fix nil block
Apr 13, 2020
cacb6ed
remove log
Apr 13, 2020
82537aa
fix multiple goroutine
Apr 14, 2020
32787d2
rpc: called beacon final view for beacon beststate
0xmerman Apr 14, 2020
282ead6
shardprocess: removed unused code
0xmerman Apr 15, 2020
052f78b
first merge
0xkumi Apr 16, 2020
305b12a
resolve conflict: metadata
0xmerman Apr 16, 2020
4ed304b
able to build
Apr 17, 2020
08f0bff
Fix nil pointer
Apr 17, 2020
b9ea09f
allow update currentMiningProcess
Apr 17, 2020
84165e9
Fix issue get wrong blocks for insert
Apr 20, 2020
8bcd0f0
Update
Apr 20, 2020
6478b25
Add Syncker log
Apr 20, 2020
68eea07
Merge remote-tracking branch 'origin/dev/multiview-newdb-fixbeaconsyn…
Apr 20, 2020
82cbcd3
add logs
Apr 20, 2020
1f154a7
Merge branch 'dev/multiview-newdb' into master-temp-B-deploy-consensu…
Apr 20, 2020
bb493ab
add more log
Apr 20, 2020
ca6c402
only run consensus when in committee
Apr 20, 2020
799c13c
Merge remote-tracking branch 'origin/dev/multiview-newdb' into dev/mu…
Apr 20, 2020
9af3d5a
- refactor code
Apr 21, 2020
b2cb289
Merge remote-tracking branch 'remotes/origin/dev/multiview-newdb' int…
Apr 21, 2020
4f14f92
clear state when init
Apr 22, 2020
622969a
lock reading user mining key
Apr 23, 2020
5032430
Remove old mempool, disable mempool websocket
Apr 23, 2020
6a19aab
Merge branch 'dev/multiview-newdb' of https://github.com/incognitocha…
Apr 23, 2020
0c0b13c
- refactor code
Apr 23, 2020
e67a056
Merge remote-tracking branch 'origin/dev/master-db-v2' into dev/multi…
Apr 23, 2020
1dc6db9
Merge branch 'dev/multiview-newdb-merge-portal' into dev/multiview-newdb
Apr 24, 2020
c4219e4
refactor: update chain cmd
0xmerman Apr 27, 2020
b843e38
refactor: init blockchain
0xmerman Apr 27, 2020
8cb3786
fix extract bridge data
Apr 27, 2020
106d036
refactor: remove unused code
0xmerman Apr 27, 2020
520e244
refactor: remove unused code
0xmerman Apr 27, 2020
00fd980
log: update log
0xmerman Apr 27, 2020
b8e3be6
refactor: remove unused code
0xmerman Apr 28, 2020
2fbd248
Merge remote-tracking branch 'remotes/origin/dev/master-db-v2' into d…
Apr 28, 2020
9b46680
Merge remote-tracking branch 'remotes/origin/dev/master-db-v2' into d…
Apr 28, 2020
ed8a3a5
Merge remote-tracking branch 'remotes/origin/dev/master-db-v2' into d…
Apr 28, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -62,6 +62,7 @@ mempool/testdatabase
cmd/incognito
blockchain/testparams/*
tmp/*
bin/data

# vim
*.swp
Expand Down
6 changes: 0 additions & 6 deletions bin/Dockerfile
Expand Up @@ -10,21 +10,15 @@ ARG commit=commit
ENV commit=$commit


COPY ./bootnode /
COPY ./keylist.json /
COPY ./keylist_256.json /
COPY ./sample-config.conf /


RUN chmod +x /bootnode

COPY ./run_bootnode.sh /
COPY ./run_incognito.sh /
COPY ./run_incognito_dev.sh /
COPY ./run_fullnode.sh /


RUN chmod +x /run_bootnode.sh
RUN chmod +x /run_incognito_dev.sh
RUN chmod +x /run_fullnode.sh

Expand Down
3 changes: 1 addition & 2 deletions bin/local.sh
Expand Up @@ -9,10 +9,9 @@ fi
echo "!23"

env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '-w' -o incognito ../*.go
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '-w' -o bootnode ../bootnode/*.go
cp ../keylist.json .
cp ../keylist_256.json .
cp ../sample-config.conf .

commit=`git show --summary --oneline | cut -d ' ' -f 1`
docker build --build-arg commit=$commit . -t incognito && echo "Commit: $commit"
docker rmi -f $(docker images --filter "dangling=true" -q)
131 changes: 117 additions & 14 deletions blockchain/accessor_blockchain.go
Expand Up @@ -11,17 +11,120 @@ import (
)

func (blockchain *BlockChain) StoreShardBestState(shardID byte) error {
return rawdbv2.StoreShardBestState(blockchain.GetDatabase(), shardID, blockchain.BestState.Shard[shardID])
return rawdbv2.StoreShardBestState(blockchain.GetDatabase(), shardID, blockchain.GetBestStateShard(shardID))
}

func (blockchain *BlockChain) FinalizedShardBlock(shardBlock *ShardBlock) error {
return rawdbv2.FinalizedShardBlock(blockchain.GetDatabase(), shardBlock.Header.ShardID, shardBlock.Header.Hash())
}

func (blockchain *BlockChain) GetFinalizedShardBlock(shardID byte) (*ShardBlock, uint64, error) {
hash, err := rawdbv2.GetFinalizedShardBlock(blockchain.GetDatabase(), shardID)
if err != nil {
return nil, 0, err
}
shardBlock, height, err := blockchain.GetShardBlockByHash(hash)
if err != nil {
return nil, 0, err
}
return shardBlock, height, nil
}

func (blockchain *BlockChain) DeleteShardBlockByView(view common.Hash) error {
return rawdbv2.DeleteShardBlockByView(blockchain.GetDatabase(), view)
}

func (blockchain *BlockChain) GetShardBlockByHeightAndView(shardID byte, height uint64, view common.Hash) (*ShardBlock, error) {
finalShardBlock, finalHeight, err := blockchain.GetFinalizedShardBlock(shardID)
if err != nil {
return nil, err
}
if height == finalHeight {
return finalShardBlock, nil
}
if height < finalHeight {
shardBlocks, err := blockchain.GetShardBlockByHeight(height, shardID)
if err != nil {
return nil, err
}
shardBlock := NewShardBlock()
for _, v := range shardBlocks {
shardBlock = v
break
}
return shardBlock, nil
}
if height > finalHeight {
shardBlockIndexes, err := rawdbv2.GetShardBlockByView(blockchain.GetDatabase(), view)
if err != nil {
return nil, err
}
if blockHash, ok := shardBlockIndexes[height]; !ok {
return nil, fmt.Errorf("Shard %+v, Block Height %+v, View %+v, not found", shardID, height, view)
} else {
shardBlock, shardHeight, err := blockchain.GetShardBlockByHash(blockHash)
if err != nil {
return nil, err
}
if shardHeight != height {
return nil, fmt.Errorf("Shard %+v, Block Height %+v, View %+v, not found", shardID, height, view)
}
return shardBlock, nil
}
}
return nil, fmt.Errorf("Shard %+v, Block Height %+v, View %+v, not found", shardID, height, view)
}

func (blockchain *BlockChain) StoreBeaconBestState() error {
beaconBestStateBytes, err := json.Marshal(blockchain.BestState.Beacon)
beaconBestStateBytes, err := json.Marshal(blockchain.GetBeaconBestState())
if err != nil {
return err
}
return rawdbv2.StoreBeaconBestState(blockchain.config.DataBase, beaconBestStateBytes)
}

func (blockchain *BlockChain) FinalizedBeaconBlock(beaconBlock *BeaconBlock) error {
return rawdbv2.FinalizedBeaconBlock(blockchain.GetDatabase(), beaconBlock.Header.Hash())
}

func (blockchain *BlockChain) GetFinalizedBeaconBlock() (*BeaconBlock, uint64, error) {
hash, err := rawdbv2.GetFinalizedBeaconBlock(blockchain.GetDatabase())
if err != nil {
return nil, 0, err
}
beaconBlock, height, err := blockchain.GetBeaconBlockByHash(hash)
if err != nil {
return nil, 0, err
}
return beaconBlock, height, nil
}

func (blockchain *BlockChain) DeleteBeaconBlockByView(view common.Hash) error {
return rawdbv2.DeleteBeaconBlockByView(blockchain.GetDatabase(), view)
}

func (blockchain *BlockChain) GetBeaconBlockByHeightAndView(height uint64, viewHash common.Hash) (*BeaconBlock, error) {
finalView := blockchain.BeaconChain.GetFinalView()

if height == finalView.GetHeight() {
return finalView.GetBlock().(*BeaconBlock), nil
}
if height < finalView.GetHeight() {
beaconBlocks, err := blockchain.GetBeaconBlockByHeight(height)
if err != nil {
return nil, err
}
return beaconBlocks[0], nil
}
if height > finalView.GetHeight() {
view := blockchain.BeaconChain.GetViewByHash(viewHash)
if view != nil {
return view.GetBlock().(*BeaconBlock), nil
}
}
return nil, fmt.Errorf("Beacon, Block Height %+v, View %+v, not found", height, viewHash)
}

func (blockchain *BlockChain) GetBlockHeightByBlockHash(hash common.Hash) (uint64, byte, error) {
return rawdbv2.GetIndexOfBlock(blockchain.GetDatabase(), hash)
}
Expand Down Expand Up @@ -137,34 +240,34 @@ func (blockchain *BlockChain) GetShardBlockByHash(hash common.Hash) (*ShardBlock
return shardBlock, shardBlock.Header.Height, nil
}

func (blockchain *BlockChain) GetShardRewardStateDB(shardID byte) *statedb.StateDB {
return blockchain.BestState.Shard[shardID].GetCopiedRewardStateDB()
func (blockchain *BlockChain) GetBestStateShardRewardStateDB(shardID byte) *statedb.StateDB {
return blockchain.GetBestStateShard(shardID).GetShardRewardStateDB()
}

func (blockchain *BlockChain) GetTransactionStateDB(shardID byte) *statedb.StateDB {
return blockchain.BestState.Shard[shardID].GetCopiedTransactionStateDB()
func (blockchain *BlockChain) GetBestStateTransactionStateDB(shardID byte) *statedb.StateDB {
return blockchain.GetBestStateShard(shardID).GetCopiedTransactionStateDB()
}

func (blockchain *BlockChain) GetShardFeatureStateDB(shardID byte) *statedb.StateDB {
return blockchain.BestState.Shard[shardID].GetCopiedFeatureStateDB()
return blockchain.GetBestStateShard(shardID).GetCopiedFeatureStateDB()
}

func (blockchain *BlockChain) GetBeaconFeatureStateDB() *statedb.StateDB {
return blockchain.BestState.Beacon.GetCopiedFeatureStateDB()
func (blockchain *BlockChain) GetBestStateBeaconFeatureStateDB() *statedb.StateDB {
return blockchain.GetBeaconBestState().GetBeaconFeatureStateDB()
}

func (blockchain *BlockChain) GetBeaconFeatureStateDBByHeight(height uint64, db incdb.Database) (*statedb.StateDB, error) {
func (blockchain *BlockChain) GetBestStateBeaconFeatureStateDBByHeight(height uint64, db incdb.Database) (*statedb.StateDB, error) {
rootHash, err := blockchain.GetBeaconFeatureRootHash(blockchain.GetDatabase(), height)
if err != nil {
return nil, fmt.Errorf("Beacon Feature State DB not found, height %+v, error %+v", height, err)
}
return statedb.NewWithPrefixTrie(rootHash, statedb.NewDatabaseAccessWarper(db))
}

func (blockchain *BlockChain) GetBeaconSlashStateDB() *statedb.StateDB {
return blockchain.BestState.Beacon.slashStateDB
func (blockchain *BlockChain) GetBestBeaconSlashStateDB() *statedb.StateDB {
return blockchain.GetBeaconBestState().slashStateDB
}

func (blockchain *BlockChain) GetBeaconRewardStateDB() *statedb.StateDB {
return blockchain.BestState.Beacon.rewardStateDB
func (blockchain *BlockChain) GetBestBeaconRewardStateDB() *statedb.StateDB {
return blockchain.GetBeaconBestState().rewardStateDB
}
14 changes: 7 additions & 7 deletions blockchain/accessor_token.go
Expand Up @@ -9,7 +9,7 @@ import (

func (blockchain *BlockChain) ListAllPrivacyCustomTokenAndPRV() (map[common.Hash]*statedb.TokenState, error) {
tokenStates := make(map[common.Hash]*statedb.TokenState)
for i := 0; i < blockchain.BestState.Beacon.ActiveShards; i++ {
for i := 0; i < blockchain.GetBeaconBestState().ActiveShards; i++ {
shardID := byte(i)
m, err := blockchain.ListPrivacyCustomTokenAndPRVByShardID(shardID)
if err != nil {
Expand All @@ -34,7 +34,7 @@ func (blockchain *BlockChain) ListAllPrivacyCustomTokenAndPRV() (map[common.Hash

func (blockchain *BlockChain) ListAllPrivacyCustomTokenAndPRVWithTxs() (map[common.Hash]*statedb.TokenState, error) {
tokenStates := make(map[common.Hash]*statedb.TokenState)
for i := 0; i < blockchain.BestState.Beacon.ActiveShards; i++ {
for i := 0; i < blockchain.GetBeaconBestState().ActiveShards; i++ {
shardID := byte(i)
m, err := blockchain.ListPrivacyCustomTokenAndPRVByShardIDWithTxs(shardID)
if err != nil {
Expand All @@ -59,13 +59,13 @@ func (blockchain *BlockChain) ListAllPrivacyCustomTokenAndPRVWithTxs() (map[comm

// ListCustomToken - return all custom token which existed in network
func (blockchain *BlockChain) ListPrivacyCustomTokenAndPRVByShardID(shardID byte) (map[common.Hash]*statedb.TokenState, error) {
tokenStates := statedb.ListPrivacyToken(blockchain.BestState.Shard[shardID].GetCopiedTransactionStateDB())
tokenStates := statedb.ListPrivacyToken(blockchain.GetBestStateShard(shardID).GetCopiedTransactionStateDB())
return tokenStates, nil
}

// ListCustomToken - return all custom token which existed in network
func (blockchain *BlockChain) ListPrivacyCustomTokenAndPRVByShardIDWithTxs(shardID byte) (map[common.Hash]*statedb.TokenState, error) {
tokenStates := statedb.ListPrivacyTokenWithTxs(blockchain.BestState.Shard[shardID].GetCopiedTransactionStateDB())
tokenStates := statedb.ListPrivacyTokenWithTxs(blockchain.GetBestStateShard(shardID).GetCopiedTransactionStateDB())
return tokenStates, nil
}

Expand All @@ -92,18 +92,18 @@ func (blockchain *BlockChain) ListPrivacyTokenAndBridgeTokenAndPRVByShardID(shar

// Check Privacy Custom token ID is existed
func (blockchain *BlockChain) PrivacyCustomTokenIDExistedV2(tokenID *common.Hash, shardID byte) bool {
return statedb.PrivacyTokenIDExisted(blockchain.BestState.Shard[shardID].GetCopiedTransactionStateDB(), *tokenID)
return statedb.PrivacyTokenIDExisted(blockchain.GetBestStateShard(shardID).GetCopiedTransactionStateDB(), *tokenID)
}

// Check Privacy Custom token ID is existed
func (blockchain *BlockChain) GetPrivacyTokenState(tokenID common.Hash, shardID byte) (*statedb.TokenState, bool, error) {
return statedb.GetPrivacyTokenState(blockchain.BestState.Shard[shardID].GetCopiedTransactionStateDB(), tokenID)
return statedb.GetPrivacyTokenState(blockchain.GetBestStateShard(shardID).GetCopiedTransactionStateDB(), tokenID)
}

func (blockchain *BlockChain) GetAllBridgeTokens() ([]common.Hash, []*rawdbv2.BridgeTokenInfo, error) {
bridgeTokenIDs := []common.Hash{}
allBridgeTokens := []*rawdbv2.BridgeTokenInfo{}
bridgeStateDB := blockchain.BestState.Beacon.GetCopiedFeatureStateDB()
bridgeStateDB := blockchain.GetBeaconBestState().GetBeaconFeatureStateDB()
allBridgeTokensBytes, err := statedb.GetAllBridgeTokens(bridgeStateDB)
if err != nil {
return bridgeTokenIDs, allBridgeTokens, err
Expand Down
12 changes: 5 additions & 7 deletions blockchain/accessor_transaction.go
Expand Up @@ -130,7 +130,7 @@ func (blockchain *BlockChain) ValidateResponseTransactionFromTxsWithMetadata(sha
Logger.log.Infof("Coin ID %+v", *coinID)
Logger.log.Infof("Amount Request %+v", amountRes)
Logger.log.Infof("Temp Public Key %+v", tempPublicKey)
amount, err := statedb.GetCommitteeReward(blockchain.BestState.Shard[shardBlock.Header.ShardID].GetCopiedRewardStateDB(), tempPublicKey, requestMeta.TokenID)
amount, err := statedb.GetCommitteeReward(blockchain.GetBestStateShard(shardBlock.Header.ShardID).GetShardRewardStateDB(), tempPublicKey, requestMeta.TokenID)
if (amount == 0) || (err != nil) {
return errors.Errorf("Invalid request %v, amount from db %v, error %v", requester, amount, err)
}
Expand Down Expand Up @@ -200,11 +200,11 @@ func (blockchain *BlockChain) InitTxSalaryByCoinID(
}

// @Notice: change from body.Transaction -> transactions
func (blockchain *BlockChain) BuildResponseTransactionFromTxsWithMetadata(transactions []metadata.Transaction, blkProducerPrivateKey *privacy.PrivateKey, shardID byte) ([]metadata.Transaction, error) {
func (blockchain *BlockChain) BuildResponseTransactionFromTxsWithMetadata(view *ShardBestState, transactions []metadata.Transaction, blkProducerPrivateKey *privacy.PrivateKey, shardID byte) ([]metadata.Transaction, error) {
txRequestTable := reqTableFromReqTxs(transactions)
txsResponse := []metadata.Transaction{}
for key, value := range txRequestTable {
txRes, err := blockchain.buildWithDrawTransactionResponse(&value, blkProducerPrivateKey, shardID)
txRes, err := blockchain.buildWithDrawTransactionResponse(view, &value, blkProducerPrivateKey, shardID)
if err != nil {
Logger.log.Errorf("Build Withdraw transactions response for tx %v return errors %v", value, err)
delete(txRequestTable, key)
Expand Down Expand Up @@ -232,11 +232,9 @@ func (blockchain *BlockChain) BuildResponseTransactionFromTxsWithMetadata(transa
//in case payment-address: return all outputcoin tx with no amount value
//- Param #2: coinType - which type of joinsplitdesc(COIN or BOND)
func (blockchain *BlockChain) GetListOutputCoinsByKeyset(keyset *incognitokey.KeySet, shardID byte, tokenID *common.Hash) ([]*privacy.OutputCoin, error) {
blockchain.BestState.Shard[shardID].lock.Lock()
defer blockchain.BestState.Shard[shardID].lock.Unlock()
var outCointsInBytes [][]byte
var err error
transactionStateDB := blockchain.BestState.Shard[shardID].transactionStateDB
transactionStateDB := blockchain.GetBestStateShard(shardID).transactionStateDB
if keyset == nil {
return nil, NewBlockChainError(GetListOutputCoinsByKeysetError, fmt.Errorf("invalid key set, got keyset %+v", keyset))
}
Expand Down Expand Up @@ -290,7 +288,7 @@ func (blockchain *BlockChain) GetListOutputCoinsByKeyset(keyset *incognitokey.Ke
// CreateAndSaveTxViewPointFromBlock - fetch data from block, put into txviewpoint variable and save into db
// still storage full data of commitments, serial number, snderivator to check double spend
// this function only work for transaction transfer token/prv within shard
func (blockchain *BlockChain) CreateAndSaveTxViewPointFromBlock(shardBlock *ShardBlock, transactionStateRoot *statedb.StateDB, beaconFeatureStateRoot *statedb.StateDB) error {
func (blockchain *BlockChain) CreateAndSaveTxViewPointFromBlock(shardBlock *ShardBlock, transactionStateRoot *statedb.StateDB) error {
// Fetch data from shardBlock into tx View point
if shardBlock.Header.Height == 1 {
err := storePRV(transactionStateRoot)
Expand Down