forked from TrueCloudLab/neoneo-go
core: simplify dao creation with newDao()
This commit is contained in:
parent
32ac01130d
commit
c5ed3b788b
4 changed files with 35 additions and 31 deletions
|
@ -86,7 +86,7 @@ type headersOpFunc func(headerList *HeaderHashList)
|
||||||
func NewBlockchain(s storage.Store, cfg config.ProtocolConfiguration) (*Blockchain, error) {
|
func NewBlockchain(s storage.Store, cfg config.ProtocolConfiguration) (*Blockchain, error) {
|
||||||
bc := &Blockchain{
|
bc := &Blockchain{
|
||||||
config: cfg,
|
config: cfg,
|
||||||
dao: &dao{store: storage.NewMemCachedStore(s)},
|
dao: newDao(s),
|
||||||
headersOp: make(chan headersOpFunc),
|
headersOp: make(chan headersOpFunc),
|
||||||
headersOpDone: make(chan struct{}),
|
headersOpDone: make(chan struct{}),
|
||||||
stopCh: make(chan struct{}),
|
stopCh: make(chan struct{}),
|
||||||
|
@ -344,7 +344,7 @@ func (bc *Blockchain) processHeader(h *Header, batch storage.Batch, headerList *
|
||||||
// is happening here, quite allot as you can see :). If things are wired together
|
// is happening here, quite allot as you can see :). If things are wired together
|
||||||
// and all tests are in place, we can make a more optimized and cleaner implementation.
|
// and all tests are in place, we can make a more optimized and cleaner implementation.
|
||||||
func (bc *Blockchain) storeBlock(block *Block) error {
|
func (bc *Blockchain) storeBlock(block *Block) error {
|
||||||
cache := &dao{store: storage.NewMemCachedStore(bc.dao.store)}
|
cache := newDao(bc.dao.store)
|
||||||
if err := cache.StoreAsBlock(block, 0); err != nil {
|
if err := cache.StoreAsBlock(block, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1156,7 +1156,7 @@ func (bc *Blockchain) GetStandByValidators() (keys.PublicKeys, error) {
|
||||||
// GetValidators returns validators.
|
// GetValidators returns validators.
|
||||||
// Golang implementation of GetValidators method in C# (https://github.com/neo-project/neo/blob/c64748ecbac3baeb8045b16af0d518398a6ced24/neo/Persistence/Snapshot.cs#L182)
|
// Golang implementation of GetValidators method in C# (https://github.com/neo-project/neo/blob/c64748ecbac3baeb8045b16af0d518398a6ced24/neo/Persistence/Snapshot.cs#L182)
|
||||||
func (bc *Blockchain) GetValidators(txes ...*transaction.Transaction) ([]*keys.PublicKey, error) {
|
func (bc *Blockchain) GetValidators(txes ...*transaction.Transaction) ([]*keys.PublicKey, error) {
|
||||||
cache := &dao{store: storage.NewMemCachedStore(bc.dao.store)}
|
cache := newDao(bc.dao.store)
|
||||||
if len(txes) > 0 {
|
if len(txes) > 0 {
|
||||||
for _, tx := range txes {
|
for _, tx := range txes {
|
||||||
// iterate through outputs
|
// iterate through outputs
|
||||||
|
|
|
@ -19,6 +19,10 @@ type dao struct {
|
||||||
store *storage.MemCachedStore
|
store *storage.MemCachedStore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newDao(backend storage.Store) *dao {
|
||||||
|
return &dao{store: storage.NewMemCachedStore(backend)}
|
||||||
|
}
|
||||||
|
|
||||||
// GetAndDecode performs get operation and decoding with serializable structures.
|
// GetAndDecode performs get operation and decoding with serializable structures.
|
||||||
func (dao *dao) GetAndDecode(entity io.Serializable, key []byte) error {
|
func (dao *dao) GetAndDecode(entity io.Serializable, key []byte) error {
|
||||||
entityBytes, err := dao.store.Get(key)
|
entityBytes, err := dao.store.Get(key)
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPutGetAndDecode(t *testing.T) {
|
func TestPutGetAndDecode(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
serializable := &TestSerializable{field: random.String(4)}
|
serializable := &TestSerializable{field: random.String(4)}
|
||||||
hash := []byte{1}
|
hash := []byte{1}
|
||||||
err := dao.Put(serializable, hash)
|
err := dao.Put(serializable, hash)
|
||||||
|
@ -40,7 +40,7 @@ func (t *TestSerializable) DecodeBinary(reader *io.BinReader) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAccountStateOrNew_New(t *testing.T) {
|
func TestGetAccountStateOrNew_New(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint160()
|
hash := random.Uint160()
|
||||||
createdAccount, err := dao.GetAccountStateOrNew(hash)
|
createdAccount, err := dao.GetAccountStateOrNew(hash)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -51,7 +51,7 @@ func TestGetAccountStateOrNew_New(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutAndGetAccountStateOrNew(t *testing.T) {
|
func TestPutAndGetAccountStateOrNew(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint160()
|
hash := random.Uint160()
|
||||||
accountState := &state.Account{ScriptHash: hash}
|
accountState := &state.Account{ScriptHash: hash}
|
||||||
err := dao.PutAccountState(accountState)
|
err := dao.PutAccountState(accountState)
|
||||||
|
@ -62,7 +62,7 @@ func TestPutAndGetAccountStateOrNew(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutAndGetAssetState(t *testing.T) {
|
func TestPutAndGetAssetState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
id := random.Uint256()
|
id := random.Uint256()
|
||||||
assetState := &state.Asset{ID: id, Owner: keys.PublicKey{}}
|
assetState := &state.Asset{ID: id, Owner: keys.PublicKey{}}
|
||||||
err := dao.PutAssetState(assetState)
|
err := dao.PutAssetState(assetState)
|
||||||
|
@ -73,7 +73,7 @@ func TestPutAndGetAssetState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutAndGetContractState(t *testing.T) {
|
func TestPutAndGetContractState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
contractState := &state.Contract{Script: []byte{}, ParamList:[]smartcontract.ParamType{}}
|
contractState := &state.Contract{Script: []byte{}, ParamList:[]smartcontract.ParamType{}}
|
||||||
hash := contractState.ScriptHash()
|
hash := contractState.ScriptHash()
|
||||||
err := dao.PutContractState(contractState)
|
err := dao.PutContractState(contractState)
|
||||||
|
@ -84,7 +84,7 @@ func TestPutAndGetContractState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteContractState(t *testing.T) {
|
func TestDeleteContractState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
contractState := &state.Contract{Script: []byte{}, ParamList:[]smartcontract.ParamType{}}
|
contractState := &state.Contract{Script: []byte{}, ParamList:[]smartcontract.ParamType{}}
|
||||||
hash := contractState.ScriptHash()
|
hash := contractState.ScriptHash()
|
||||||
err := dao.PutContractState(contractState)
|
err := dao.PutContractState(contractState)
|
||||||
|
@ -97,7 +97,7 @@ func TestDeleteContractState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetUnspentCoinStateOrNew_New(t *testing.T) {
|
func TestGetUnspentCoinStateOrNew_New(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
unspentCoinState, err := dao.GetUnspentCoinStateOrNew(hash)
|
unspentCoinState, err := dao.GetUnspentCoinStateOrNew(hash)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -108,7 +108,7 @@ func TestGetUnspentCoinStateOrNew_New(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetUnspentCoinState_Err(t *testing.T) {
|
func TestGetUnspentCoinState_Err(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
gotUnspentCoinState, err := dao.GetUnspentCoinState(hash)
|
gotUnspentCoinState, err := dao.GetUnspentCoinState(hash)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
@ -116,7 +116,7 @@ func TestGetUnspentCoinState_Err(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutGetUnspentCoinState(t *testing.T) {
|
func TestPutGetUnspentCoinState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
unspentCoinState := &UnspentCoinState{states:[]state.Coin{}}
|
unspentCoinState := &UnspentCoinState{states:[]state.Coin{}}
|
||||||
err := dao.PutUnspentCoinState(hash, unspentCoinState)
|
err := dao.PutUnspentCoinState(hash, unspentCoinState)
|
||||||
|
@ -127,7 +127,7 @@ func TestPutGetUnspentCoinState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSpentCoinStateOrNew_New(t *testing.T) {
|
func TestGetSpentCoinStateOrNew_New(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
spentCoinState, err := dao.GetSpentCoinsOrNew(hash)
|
spentCoinState, err := dao.GetSpentCoinsOrNew(hash)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -138,7 +138,7 @@ func TestGetSpentCoinStateOrNew_New(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutAndGetSpentCoinState(t *testing.T) {
|
func TestPutAndGetSpentCoinState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
spentCoinState := &SpentCoinState{items:make(map[uint16]uint32)}
|
spentCoinState := &SpentCoinState{items:make(map[uint16]uint32)}
|
||||||
err := dao.PutSpentCoinState(hash, spentCoinState)
|
err := dao.PutSpentCoinState(hash, spentCoinState)
|
||||||
|
@ -149,7 +149,7 @@ func TestPutAndGetSpentCoinState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSpentCoinState_Err(t *testing.T) {
|
func TestGetSpentCoinState_Err(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
spentCoinState, err := dao.GetSpentCoinState(hash)
|
spentCoinState, err := dao.GetSpentCoinState(hash)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
@ -157,7 +157,7 @@ func TestGetSpentCoinState_Err(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteSpentCoinState(t *testing.T) {
|
func TestDeleteSpentCoinState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
spentCoinState := &SpentCoinState{items:make(map[uint16]uint32)}
|
spentCoinState := &SpentCoinState{items:make(map[uint16]uint32)}
|
||||||
err := dao.PutSpentCoinState(hash, spentCoinState)
|
err := dao.PutSpentCoinState(hash, spentCoinState)
|
||||||
|
@ -170,7 +170,7 @@ func TestDeleteSpentCoinState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetValidatorStateOrNew_New(t *testing.T) {
|
func TestGetValidatorStateOrNew_New(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
publicKey := &keys.PublicKey{}
|
publicKey := &keys.PublicKey{}
|
||||||
validatorState, err := dao.GetValidatorStateOrNew(publicKey)
|
validatorState, err := dao.GetValidatorStateOrNew(publicKey)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -181,7 +181,7 @@ func TestGetValidatorStateOrNew_New(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutGetValidatorState(t *testing.T) {
|
func TestPutGetValidatorState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
publicKey := &keys.PublicKey{}
|
publicKey := &keys.PublicKey{}
|
||||||
validatorState := &state.Validator{
|
validatorState := &state.Validator{
|
||||||
PublicKey: publicKey,
|
PublicKey: publicKey,
|
||||||
|
@ -196,7 +196,7 @@ func TestPutGetValidatorState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteValidatorState(t *testing.T) {
|
func TestDeleteValidatorState(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
publicKey := &keys.PublicKey{}
|
publicKey := &keys.PublicKey{}
|
||||||
validatorState := &state.Validator{
|
validatorState := &state.Validator{
|
||||||
PublicKey: publicKey,
|
PublicKey: publicKey,
|
||||||
|
@ -213,7 +213,7 @@ func TestDeleteValidatorState(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetValidators(t *testing.T) {
|
func TestGetValidators(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
publicKey := &keys.PublicKey{}
|
publicKey := &keys.PublicKey{}
|
||||||
validatorState := &state.Validator{
|
validatorState := &state.Validator{
|
||||||
PublicKey: publicKey,
|
PublicKey: publicKey,
|
||||||
|
@ -228,7 +228,7 @@ func TestGetValidators(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutGetAppExecResult(t *testing.T) {
|
func TestPutGetAppExecResult(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
appExecResult := &state.AppExecResult{TxHash: hash, Events:[]state.NotificationEvent{}}
|
appExecResult := &state.AppExecResult{TxHash: hash, Events:[]state.NotificationEvent{}}
|
||||||
err := dao.PutAppExecResult(appExecResult)
|
err := dao.PutAppExecResult(appExecResult)
|
||||||
|
@ -239,7 +239,7 @@ func TestPutGetAppExecResult(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutGetStorageItem(t *testing.T) {
|
func TestPutGetStorageItem(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint160()
|
hash := random.Uint160()
|
||||||
key := []byte{0}
|
key := []byte{0}
|
||||||
storageItem := &state.StorageItem{Value: []uint8{}}
|
storageItem := &state.StorageItem{Value: []uint8{}}
|
||||||
|
@ -250,7 +250,7 @@ func TestPutGetStorageItem(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteStorageItem(t *testing.T) {
|
func TestDeleteStorageItem(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint160()
|
hash := random.Uint160()
|
||||||
key := []byte{0}
|
key := []byte{0}
|
||||||
storageItem := &state.StorageItem{Value: []uint8{}}
|
storageItem := &state.StorageItem{Value: []uint8{}}
|
||||||
|
@ -263,7 +263,7 @@ func TestDeleteStorageItem(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetBlock_NotExists(t *testing.T) {
|
func TestGetBlock_NotExists(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
hash := random.Uint256()
|
hash := random.Uint256()
|
||||||
block, err := dao.GetBlock(hash)
|
block, err := dao.GetBlock(hash)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
@ -271,7 +271,7 @@ func TestGetBlock_NotExists(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPutGetBlock(t *testing.T) {
|
func TestPutGetBlock(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
block := &Block{
|
block := &Block{
|
||||||
BlockBase: BlockBase{
|
BlockBase: BlockBase{
|
||||||
Script: transaction.Witness{
|
Script: transaction.Witness{
|
||||||
|
@ -289,14 +289,14 @@ func TestPutGetBlock(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetVersion_NoVersion(t *testing.T) {
|
func TestGetVersion_NoVersion(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
version, err := dao.GetVersion()
|
version, err := dao.GetVersion()
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
require.Equal(t, "", version)
|
require.Equal(t, "", version)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetVersion(t *testing.T) {
|
func TestGetVersion(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
err := dao.PutVersion("testVersion")
|
err := dao.PutVersion("testVersion")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
version, err := dao.GetVersion()
|
version, err := dao.GetVersion()
|
||||||
|
@ -305,14 +305,14 @@ func TestGetVersion(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCurrentHeaderHeight_NoHeader(t *testing.T) {
|
func TestGetCurrentHeaderHeight_NoHeader(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
height, err := dao.GetCurrentBlockHeight()
|
height, err := dao.GetCurrentBlockHeight()
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
require.Equal(t, uint32(0), height)
|
require.Equal(t, uint32(0), height)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCurrentHeaderHeight_Store(t *testing.T) {
|
func TestGetCurrentHeaderHeight_Store(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
block := &Block{
|
block := &Block{
|
||||||
BlockBase: BlockBase{
|
BlockBase: BlockBase{
|
||||||
Script: transaction.Witness{
|
Script: transaction.Witness{
|
||||||
|
@ -329,7 +329,7 @@ func TestGetCurrentHeaderHeight_Store(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreAsTransaction(t *testing.T) {
|
func TestStoreAsTransaction(t *testing.T) {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(storage.NewMemoryStore())}
|
dao := newDao(storage.NewMemoryStore())
|
||||||
tx := &transaction.Transaction{}
|
tx := &transaction.Transaction{}
|
||||||
hash := tx.Hash()
|
hash := tx.Hash()
|
||||||
err := dao.StoreAsTransaction(tx, 0)
|
err := dao.StoreAsTransaction(tx, 0)
|
||||||
|
|
|
@ -24,7 +24,7 @@ type interopContext struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInteropContext(trigger byte, bc Blockchainer, s storage.Store, block *Block, tx *transaction.Transaction) *interopContext {
|
func newInteropContext(trigger byte, bc Blockchainer, s storage.Store, block *Block, tx *transaction.Transaction) *interopContext {
|
||||||
dao := &dao{store: storage.NewMemCachedStore(s)}
|
dao := newDao(s)
|
||||||
nes := make([]state.NotificationEvent, 0)
|
nes := make([]state.NotificationEvent, 0)
|
||||||
return &interopContext{bc, trigger, block, tx, dao, nes}
|
return &interopContext{bc, trigger, block, tx, dao, nes}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue