Commit e3397343 authored by harrylee's avatar harrylee Committed by vipwzw

add fork

parent d34b1c84
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
*/ */
func (s *storage) Exec_ContentStorage(payload *storagetypes.ContentOnlyNotaryStorage, tx *types.Transaction, index int) (*types.Receipt, error) { func (s *storage) Exec_ContentStorage(payload *storagetypes.ContentOnlyNotaryStorage, tx *types.Transaction, index int) (*types.Receipt, error) {
s.GetAPI()
action := newStorageAction(s, tx, index) action := newStorageAction(s, tx, index)
return action.ContentStorage(payload) return action.ContentStorage(payload)
} }
......
...@@ -12,6 +12,8 @@ import ( ...@@ -12,6 +12,8 @@ import (
func (s *storage) ExecLocal_ContentStorage(payload *ety.ContentOnlyNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (s *storage) ExecLocal_ContentStorage(payload *ety.ContentOnlyNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), ety.StorageX, ety.ForkStorageLocalDB) {
if receiptData.Ty == types.ExecOk { if receiptData.Ty == types.ExecOk {
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
switch log.Ty { switch log.Ty {
...@@ -25,11 +27,14 @@ func (s *storage) ExecLocal_ContentStorage(payload *ety.ContentOnlyNotaryStorage ...@@ -25,11 +27,14 @@ func (s *storage) ExecLocal_ContentStorage(payload *ety.ContentOnlyNotaryStorage
} }
} }
} }
}
return s.addAutoRollBack(tx, dbSet.KV), nil return s.addAutoRollBack(tx, dbSet.KV), nil
} }
func (s *storage) ExecLocal_HashStorage(payload *ety.HashOnlyNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (s *storage) ExecLocal_HashStorage(payload *ety.HashOnlyNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), ety.StorageX, ety.ForkStorageLocalDB) {
if receiptData.Ty == types.ExecOk { if receiptData.Ty == types.ExecOk {
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
switch log.Ty { switch log.Ty {
...@@ -43,11 +48,14 @@ func (s *storage) ExecLocal_HashStorage(payload *ety.HashOnlyNotaryStorage, tx * ...@@ -43,11 +48,14 @@ func (s *storage) ExecLocal_HashStorage(payload *ety.HashOnlyNotaryStorage, tx *
} }
} }
} }
}
return s.addAutoRollBack(tx, dbSet.KV), nil return s.addAutoRollBack(tx, dbSet.KV), nil
} }
func (s *storage) ExecLocal_LinkStorage(payload *ety.LinkNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (s *storage) ExecLocal_LinkStorage(payload *ety.LinkNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), ety.StorageX, ety.ForkStorageLocalDB) {
if receiptData.Ty == types.ExecOk { if receiptData.Ty == types.ExecOk {
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
switch log.Ty { switch log.Ty {
...@@ -61,11 +69,14 @@ func (s *storage) ExecLocal_LinkStorage(payload *ety.LinkNotaryStorage, tx *type ...@@ -61,11 +69,14 @@ func (s *storage) ExecLocal_LinkStorage(payload *ety.LinkNotaryStorage, tx *type
} }
} }
} }
}
return s.addAutoRollBack(tx, dbSet.KV), nil return s.addAutoRollBack(tx, dbSet.KV), nil
} }
func (s *storage) ExecLocal_EncryptStorage(payload *ety.EncryptNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (s *storage) ExecLocal_EncryptStorage(payload *ety.EncryptNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), ety.StorageX, ety.ForkStorageLocalDB) {
if receiptData.Ty == types.ExecOk { if receiptData.Ty == types.ExecOk {
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
switch log.Ty { switch log.Ty {
...@@ -79,11 +90,14 @@ func (s *storage) ExecLocal_EncryptStorage(payload *ety.EncryptNotaryStorage, tx ...@@ -79,11 +90,14 @@ func (s *storage) ExecLocal_EncryptStorage(payload *ety.EncryptNotaryStorage, tx
} }
} }
} }
}
return s.addAutoRollBack(tx, dbSet.KV), nil return s.addAutoRollBack(tx, dbSet.KV), nil
} }
func (s *storage) ExecLocal_EncryptShareStorage(payload *ety.EncryptShareNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (s *storage) ExecLocal_EncryptShareStorage(payload *ety.EncryptShareNotaryStorage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
dbSet := &types.LocalDBSet{} dbSet := &types.LocalDBSet{}
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), ety.StorageX, ety.ForkStorageLocalDB) {
if receiptData.Ty == types.ExecOk { if receiptData.Ty == types.ExecOk {
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
switch log.Ty { switch log.Ty {
...@@ -97,6 +111,7 @@ func (s *storage) ExecLocal_EncryptShareStorage(payload *ety.EncryptShareNotaryS ...@@ -97,6 +111,7 @@ func (s *storage) ExecLocal_EncryptShareStorage(payload *ety.EncryptShareNotaryS
} }
} }
} }
}
return s.addAutoRollBack(tx, dbSet.KV), nil return s.addAutoRollBack(tx, dbSet.KV), nil
} }
......
...@@ -53,7 +53,11 @@ func (s *storage) GetDriverName() string { ...@@ -53,7 +53,11 @@ func (s *storage) GetDriverName() string {
//ExecutorOrder Exec 的时候 同时执行 ExecLocal //ExecutorOrder Exec 的时候 同时执行 ExecLocal
func (s *storage) ExecutorOrder() int64 { func (s *storage) ExecutorOrder() int64 {
cfg := s.GetAPI().GetConfig()
if cfg.IsDappFork(s.GetHeight(), storagetypes.StorageX, storagetypes.ForkStorageLocalDB) {
return drivers.ExecLocalSameTime return drivers.ExecLocalSameTime
}
return s.DriverBase.ExecutorOrder()
} }
// CheckTx 实现自定义检验交易接口,供框架调用 // CheckTx 实现自定义检验交易接口,供框架调用
......
...@@ -4,6 +4,8 @@ import ( ...@@ -4,6 +4,8 @@ import (
"math/rand" "math/rand"
"testing" "testing"
"github.com/gogo/protobuf/proto"
"github.com/33cn/chain33/account" "github.com/33cn/chain33/account"
"github.com/33cn/chain33/client" "github.com/33cn/chain33/client"
"github.com/33cn/chain33/common/address" "github.com/33cn/chain33/common/address"
...@@ -64,6 +66,7 @@ func init() { ...@@ -64,6 +66,7 @@ func init() {
func TestStorage(t *testing.T) { func TestStorage(t *testing.T) {
cfg := types.NewChain33Config(strings.Replace(types.GetDefaultCfgstring(), "Title=\"local\"", "Title=\"chain33\"", 1)) cfg := types.NewChain33Config(strings.Replace(types.GetDefaultCfgstring(), "Title=\"local\"", "Title=\"chain33\"", 1))
Init(oty.StorageX, cfg, nil) Init(oty.StorageX, cfg, nil)
cfg.RegisterDappFork(oty.StorageX, oty.ForkStorageLocalDB, 0)
total := 100 * types.Coin total := 100 * types.Coin
accountA := types.Account{ accountA := types.Account{
Balance: total, Balance: total,
...@@ -162,7 +165,6 @@ func TestStorage(t *testing.T) { ...@@ -162,7 +165,6 @@ func TestStorage(t *testing.T) {
assert.Equal(t, common.Sha256(contents[0]), reply.GetEncryptStorage().ContentHash) assert.Equal(t, common.Sha256(contents[0]), reply.GetEncryptStorage().ContentHash)
assert.Equal(t, crypted, reply.GetEncryptStorage().EncryptContent) assert.Equal(t, crypted, reply.GetEncryptStorage().EncryptContent)
assert.Equal(t, ivs[0], reply.GetEncryptStorage().Nonce) assert.Equal(t, ivs[0], reply.GetEncryptStorage().Nonce)
} }
func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error) { func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error) {
...@@ -201,7 +203,7 @@ func QueryStorageByKey(stateDB dbm.KV, kvdb dbm.KVDB, key string, cfg *types.Cha ...@@ -201,7 +203,7 @@ func QueryStorageByKey(stateDB dbm.KV, kvdb dbm.KVDB, key string, cfg *types.Cha
} }
return msg.(*oty.Storage), nil return msg.(*oty.Storage), nil
} }
func QueryBatchStorageByKey(stateDB dbm.KV, kvdb dbm.KVDB, para *oty.BatchQueryStorage, cfg *types.Chain33Config) (*oty.BatchReplyStorage, error) { func QueryBatchStorageByKey(stateDB dbm.KV, kvdb dbm.KVDB, para proto.Message, cfg *types.Chain33Config) (*oty.BatchReplyStorage, error) {
exec := newStorage() exec := newStorage()
q := queue.New("channel") q := queue.New("channel")
q.SetConfig(cfg) q.SetConfig(cfg)
...@@ -233,6 +235,7 @@ func CreateTx(action string, message types.Message, priv string, cfg *types.Chai ...@@ -233,6 +235,7 @@ func CreateTx(action string, message types.Message, priv string, cfg *types.Chai
//模拟区块中交易得执行过程 //模拟区块中交易得执行过程
func Exec_Block(t *testing.T, stateDB dbm.DB, kvdb dbm.KVDB, env *execEnv, txs ...*types.Transaction) error { func Exec_Block(t *testing.T, stateDB dbm.DB, kvdb dbm.KVDB, env *execEnv, txs ...*types.Transaction) error {
cfg := types.NewChain33Config(types.GetDefaultCfgstring()) cfg := types.NewChain33Config(types.GetDefaultCfgstring())
cfg.RegisterDappFork(oty.StorageX, oty.ForkStorageLocalDB, 0)
cfg.SetTitleOnlyForTest("chain33") cfg.SetTitleOnlyForTest("chain33")
exec := newStorage() exec := newStorage()
e := exec.(*storage) e := exec.(*storage)
...@@ -242,7 +245,6 @@ func Exec_Block(t *testing.T, stateDB dbm.DB, kvdb dbm.KVDB, env *execEnv, txs . ...@@ -242,7 +245,6 @@ func Exec_Block(t *testing.T, stateDB dbm.DB, kvdb dbm.KVDB, env *execEnv, txs .
t.Log(err.Error()) t.Log(err.Error())
return err return err
} }
} }
q := queue.New("channel") q := queue.New("channel")
q.SetConfig(cfg) q.SetConfig(cfg)
......
...@@ -2,7 +2,7 @@ package executor ...@@ -2,7 +2,7 @@ package executor
import ( import (
"fmt" "fmt"
"github.com/33cn/chain33/client"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
dbm "github.com/33cn/chain33/common/db" dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
) )
type StorageAction struct { type StorageAction struct {
api client.QueueProtocolAPI
db dbm.KV db dbm.KV
localdb dbm.KV localdb dbm.KV
txhash []byte txhash []byte
...@@ -23,7 +24,7 @@ type StorageAction struct { ...@@ -23,7 +24,7 @@ type StorageAction struct {
func newStorageAction(s *storage, tx *types.Transaction, index int) *StorageAction { func newStorageAction(s *storage, tx *types.Transaction, index int) *StorageAction {
hash := tx.Hash() hash := tx.Hash()
fromaddr := tx.From() fromaddr := tx.From()
return &StorageAction{s.GetStateDB(), s.GetLocalDB(), hash, fromaddr, return &StorageAction{s.GetAPI(), s.GetStateDB(), s.GetLocalDB(), hash, fromaddr,
s.GetBlockTime(), s.GetHeight(), index} s.GetBlockTime(), s.GetHeight(), index}
} }
func (s *StorageAction) GetKVSet(payload proto.Message) (kvset []*types.KeyValue) { func (s *StorageAction) GetKVSet(payload proto.Message) (kvset []*types.KeyValue) {
...@@ -36,6 +37,8 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (* ...@@ -36,6 +37,8 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (*
//TODO 这里可以加具体得文本内容限制,超过指定大小的数据不容许写到状态数据库中 //TODO 这里可以加具体得文本内容限制,超过指定大小的数据不容许写到状态数据库中
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kvs []*types.KeyValue var kvs []*types.KeyValue
cfg := s.api.GetConfig()
if cfg.IsDappFork(s.height, ety.StorageX, ety.ForkStorageLocalDB) {
key := payload.Key key := payload.Key
op := payload.Op op := payload.Op
if key == "" { if key == "" {
...@@ -57,12 +60,19 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (* ...@@ -57,12 +60,19 @@ func (s *StorageAction) ContentStorage(payload *ety.ContentOnlyNotaryStorage) (*
stg := &ety.Storage{Value: &ety.Storage_ContentStorage{ContentStorage: payload}, Ty: ety.TyContentStorageAction} stg := &ety.Storage{Value: &ety.Storage_ContentStorage{ContentStorage: payload}, Ty: ety.TyContentStorageAction}
log := &types.ReceiptLog{Ty: ety.TyContentStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyContentStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
} else {
log := &types.ReceiptLog{Ty: ety.TyContentStorageLog}
logs = append(logs, log)
kvs = s.GetKVSet(&ety.Storage{Value: &ety.Storage_ContentStorage{ContentStorage: payload}})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs} receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
return receipt, nil return receipt, nil
} }
func (s *StorageAction) HashStorage(payload *ety.HashOnlyNotaryStorage) (*types.Receipt, error) { func (s *StorageAction) HashStorage(payload *ety.HashOnlyNotaryStorage) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kvs []*types.KeyValue var kvs []*types.KeyValue
cfg := s.api.GetConfig()
if cfg.IsDappFork(s.height, ety.StorageX, ety.ForkStorageLocalDB) {
key := payload.Key key := payload.Key
if key == "" { if key == "" {
key = common.ToHex(s.txhash) key = common.ToHex(s.txhash)
...@@ -75,12 +85,20 @@ func (s *StorageAction) HashStorage(payload *ety.HashOnlyNotaryStorage) (*types. ...@@ -75,12 +85,20 @@ func (s *StorageAction) HashStorage(payload *ety.HashOnlyNotaryStorage) (*types.
stg := &ety.Storage{Value: &ety.Storage_HashStorage{HashStorage: payload}, Ty: ety.TyHashStorageAction} stg := &ety.Storage{Value: &ety.Storage_HashStorage{HashStorage: payload}, Ty: ety.TyHashStorageAction}
log := &types.ReceiptLog{Ty: ety.TyHashStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyHashStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
} else {
log := &types.ReceiptLog{Ty: ety.TyHashStorageLog}
logs = append(logs, log)
kvs = s.GetKVSet(&ety.Storage{Value: &ety.Storage_HashStorage{HashStorage: payload}})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs} receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
return receipt, nil return receipt, nil
} }
func (s *StorageAction) LinkStorage(payload *ety.LinkNotaryStorage) (*types.Receipt, error) { func (s *StorageAction) LinkStorage(payload *ety.LinkNotaryStorage) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kvs []*types.KeyValue var kvs []*types.KeyValue
cfg := s.api.GetConfig()
if cfg.IsDappFork(s.height, ety.StorageX, ety.ForkStorageLocalDB) {
key := payload.Key key := payload.Key
if key == "" { if key == "" {
key = common.ToHex(s.txhash) key = common.ToHex(s.txhash)
...@@ -93,12 +111,19 @@ func (s *StorageAction) LinkStorage(payload *ety.LinkNotaryStorage) (*types.Rece ...@@ -93,12 +111,19 @@ func (s *StorageAction) LinkStorage(payload *ety.LinkNotaryStorage) (*types.Rece
stg := &ety.Storage{Value: &ety.Storage_LinkStorage{LinkStorage: payload}, Ty: ety.TyLinkStorageAction} stg := &ety.Storage{Value: &ety.Storage_LinkStorage{LinkStorage: payload}, Ty: ety.TyLinkStorageAction}
log := &types.ReceiptLog{Ty: ety.TyLinkStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyLinkStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
} else {
log := &types.ReceiptLog{Ty: ety.TyLinkStorageLog}
logs = append(logs, log)
kvs = s.GetKVSet(&ety.Storage{Value: &ety.Storage_LinkStorage{LinkStorage: payload}})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs} receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
return receipt, nil return receipt, nil
} }
func (s *StorageAction) EncryptStorage(payload *ety.EncryptNotaryStorage) (*types.Receipt, error) { func (s *StorageAction) EncryptStorage(payload *ety.EncryptNotaryStorage) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kvs []*types.KeyValue var kvs []*types.KeyValue
cfg := s.api.GetConfig()
if cfg.IsDappFork(s.height, ety.StorageX, ety.ForkStorageLocalDB) {
key := payload.Key key := payload.Key
if key == "" { if key == "" {
key = common.ToHex(s.txhash) key = common.ToHex(s.txhash)
...@@ -111,12 +136,19 @@ func (s *StorageAction) EncryptStorage(payload *ety.EncryptNotaryStorage) (*type ...@@ -111,12 +136,19 @@ func (s *StorageAction) EncryptStorage(payload *ety.EncryptNotaryStorage) (*type
stg := &ety.Storage{Value: &ety.Storage_EncryptStorage{EncryptStorage: payload}, Ty: ety.TyEncryptStorageAction} stg := &ety.Storage{Value: &ety.Storage_EncryptStorage{EncryptStorage: payload}, Ty: ety.TyEncryptStorageAction}
log := &types.ReceiptLog{Ty: ety.TyEncryptStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyEncryptStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
} else {
log := &types.ReceiptLog{Ty: ety.TyEncryptStorageLog}
logs = append(logs, log)
kvs = s.GetKVSet(&ety.Storage{Value: &ety.Storage_EncryptStorage{EncryptStorage: payload}})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs} receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
return receipt, nil return receipt, nil
} }
func (s *StorageAction) EncryptShareStorage(payload *ety.EncryptShareNotaryStorage) (*types.Receipt, error) { func (s *StorageAction) EncryptShareStorage(payload *ety.EncryptShareNotaryStorage) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kvs []*types.KeyValue var kvs []*types.KeyValue
cfg := s.api.GetConfig()
if cfg.IsDappFork(s.height, ety.StorageX, ety.ForkStorageLocalDB) {
key := payload.Key key := payload.Key
if key == "" { if key == "" {
key = common.ToHex(s.txhash) key = common.ToHex(s.txhash)
...@@ -129,6 +161,11 @@ func (s *StorageAction) EncryptShareStorage(payload *ety.EncryptShareNotaryStora ...@@ -129,6 +161,11 @@ func (s *StorageAction) EncryptShareStorage(payload *ety.EncryptShareNotaryStora
stg := &ety.Storage{Value: &ety.Storage_EncryptShareStorage{EncryptShareStorage: payload}, Ty: ety.TyEncryptStorageAction} stg := &ety.Storage{Value: &ety.Storage_EncryptShareStorage{EncryptShareStorage: payload}, Ty: ety.TyEncryptStorageAction}
log := &types.ReceiptLog{Ty: ety.TyEncryptShareStorageLog, Log: types.Encode(stg)} log := &types.ReceiptLog{Ty: ety.TyEncryptShareStorageLog, Log: types.Encode(stg)}
logs = append(logs, log) logs = append(logs, log)
} else {
log := &types.ReceiptLog{Ty: ety.TyEncryptShareStorageLog}
logs = append(logs, log)
kvs = s.GetKVSet(&ety.Storage{Value: &ety.Storage_EncryptShareStorage{EncryptShareStorage: payload}})
}
receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs} receipt := &types.Receipt{Ty: types.ExecOk, KV: kvs, Logs: logs}
return receipt, nil return receipt, nil
} }
...@@ -186,13 +223,3 @@ func QueryStorageFromLocalDB(localdb dbm.KV, key string) (*ety.Storage, error) { ...@@ -186,13 +223,3 @@ func QueryStorageFromLocalDB(localdb dbm.KV, key string) (*ety.Storage, error) {
} }
return &storage, nil return &storage, nil
} }
//func QueryStorageFromLocalDB(localdb dbm.KV, key string) (*ety.Storage, error) {
// storageTable := NewStorageTable(localdb)
// row, err := storageTable.GetData([]byte(key))
// if err != nil {
// return nil, err
// }
// fmt.Println(row)
// return row.Data.(*ety.Storage), nil
//}
...@@ -47,6 +47,9 @@ const ( ...@@ -47,6 +47,9 @@ const (
) )
var ( var (
ForkStorageLocalDB = "ForkStorageLocalDB"
)
var (
//StorageX 执行器名称定义 //StorageX 执行器名称定义
StorageX = "storage" StorageX = "storage"
//定义actionMap //定义actionMap
...@@ -78,6 +81,7 @@ func init() { ...@@ -78,6 +81,7 @@ func init() {
// InitFork defines register fork // InitFork defines register fork
func InitFork(cfg *types.Chain33Config) { func InitFork(cfg *types.Chain33Config) {
cfg.RegisterDappFork(StorageX, "Enable", 0) cfg.RegisterDappFork(StorageX, "Enable", 0)
cfg.RegisterDappFork(StorageX, ForkStorageLocalDB, 0)
} }
// InitExecutor defines register executor // InitExecutor defines register executor
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment