statedb

package
v3.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

README

状态数据库

简介

KV状态数据库

SQL状态数据库

关于用户合约的状态数据库
  1. 每个合约对应一个SQL数据库,数据库的名字就是:chainId+"_合约的名字"。
  2. 每个数据库中都有一个默认的表state_infos,用于存储PutState的KV数据
  3. 每个数据库中有一个表state_record_sql,用于存储合约在创建和升级的时候用到的DDL,这个表主要是为了防止DDL执行到一半宕机或者报错的情况,下次再次执行时,知道哪些DDL已经执行了,哪些DDL还没有执行。
关于系统合约的状态数据库

所有系统合约都共用同一个状态数据库chainId+"_statedb" 这个数据库中有表:

  • state_infos 用于保存系统合约中用到的KV信息
  • member_extra_infos 用于保存用户的扩展信息
  • save_points 用于保存当前最新区块高度

关于Sqlite这种不支持多个database的处理

Sqlite主要用于测试的环境,不建议在生产使用, 因为Sqlite中没有多个数据库的概念,所以没办法创建多个数据库,那么就会导致所有合约都共用同一个数据库和表state_infos, 所以在测试的时候不要在多个合约中使用同名的key。

Documentation

Overview

Package statedb is a generated GoMock package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MockStateDB

type MockStateDB struct {
	// contains filtered or unexported fields
}

MockStateDB is a mock of StateDB interface.

func NewMockStateDB

func NewMockStateDB(ctrl *gomock.Controller) *MockStateDB

NewMockStateDB creates a new mock instance.

func (*MockStateDB) BeginDbTransaction

func (m *MockStateDB) BeginDbTransaction(txName string) (protocol.SqlDBTransaction, error)

BeginDbTransaction mocks base method.

func (*MockStateDB) Close

func (m *MockStateDB) Close()

Close mocks base method.

func (*MockStateDB) CommitBlock

func (m *MockStateDB) CommitBlock(blockWithRWSet *serialization.BlockWithSerializedInfo, isCache bool) error

CommitBlock mocks base method.

func (*MockStateDB) CommitDbTransaction

func (m *MockStateDB) CommitDbTransaction(txName string) error

CommitDbTransaction mocks base method.

func (*MockStateDB) CreateDatabase

func (m *MockStateDB) CreateDatabase(contractName string) error

CreateDatabase mocks base method.

func (*MockStateDB) DropDatabase

func (m *MockStateDB) DropDatabase(contractName string) error

DropDatabase mocks base method.

func (*MockStateDB) EXPECT

func (m *MockStateDB) EXPECT() *MockStateDBMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockStateDB) ExecDdlSql

func (m *MockStateDB) ExecDdlSql(contractName, sql, version string) error

ExecDdlSql mocks base method.

func (*MockStateDB) GetChainConfig

func (m *MockStateDB) GetChainConfig() (*config.ChainConfig, error)

GetChainConfig mocks base method.

func (*MockStateDB) GetContractDbName

func (m *MockStateDB) GetContractDbName(contractName string) string

GetContractDbName mocks base method.

func (*MockStateDB) GetDbTransaction

func (m *MockStateDB) GetDbTransaction(txName string) (protocol.SqlDBTransaction, error)

GetDbTransaction mocks base method.

func (*MockStateDB) GetLastSavepoint

func (m *MockStateDB) GetLastSavepoint() (uint64, error)

GetLastSavepoint mocks base method.

func (*MockStateDB) GetMemberExtraData

func (m *MockStateDB) GetMemberExtraData(member *accesscontrol.Member) (*accesscontrol.MemberExtraData, error)

GetMemberExtraData mocks base method.

func (*MockStateDB) InitGenesis

func (m *MockStateDB) InitGenesis(genesisBlock *serialization.BlockWithSerializedInfo) error

InitGenesis mocks base method.

func (*MockStateDB) QueryMulti

func (m *MockStateDB) QueryMulti(contractName, sql string, values ...interface{}) (protocol.SqlRows, error)

QueryMulti mocks base method.

func (*MockStateDB) QuerySingle

func (m *MockStateDB) QuerySingle(contractName, sql string, values ...interface{}) (protocol.SqlRow, error)

QuerySingle mocks base method.

func (*MockStateDB) ReadObject

func (m *MockStateDB) ReadObject(contractName string, key []byte) ([]byte, error)

ReadObject mocks base method.

func (*MockStateDB) ReadObjects

func (m *MockStateDB) ReadObjects(contractName string, keys [][]byte) ([][]byte, error)

ReadObjects mocks base method.

func (*MockStateDB) RollbackDbTransaction

func (m *MockStateDB) RollbackDbTransaction(txName string) error

RollbackDbTransaction mocks base method.

func (*MockStateDB) SelectObject

func (m *MockStateDB) SelectObject(contractName string, startKey, limit []byte) (protocol.StateIterator, error)

SelectObject mocks base method.

type MockStateDBMockRecorder

type MockStateDBMockRecorder struct {
	// contains filtered or unexported fields
}

MockStateDBMockRecorder is the mock recorder for MockStateDB.

func (*MockStateDBMockRecorder) BeginDbTransaction

func (mr *MockStateDBMockRecorder) BeginDbTransaction(txName interface{}) *gomock.Call

BeginDbTransaction indicates an expected call of BeginDbTransaction.

func (*MockStateDBMockRecorder) Close

func (mr *MockStateDBMockRecorder) Close() *gomock.Call

Close indicates an expected call of Close.

func (*MockStateDBMockRecorder) CommitBlock

func (mr *MockStateDBMockRecorder) CommitBlock(blockWithRWSet, isCache interface{}) *gomock.Call

CommitBlock indicates an expected call of CommitBlock.

func (*MockStateDBMockRecorder) CommitDbTransaction

func (mr *MockStateDBMockRecorder) CommitDbTransaction(txName interface{}) *gomock.Call

CommitDbTransaction indicates an expected call of CommitDbTransaction.

func (*MockStateDBMockRecorder) CreateDatabase

func (mr *MockStateDBMockRecorder) CreateDatabase(contractName interface{}) *gomock.Call

CreateDatabase indicates an expected call of CreateDatabase.

func (*MockStateDBMockRecorder) DropDatabase

func (mr *MockStateDBMockRecorder) DropDatabase(contractName interface{}) *gomock.Call

DropDatabase indicates an expected call of DropDatabase.

func (*MockStateDBMockRecorder) ExecDdlSql

func (mr *MockStateDBMockRecorder) ExecDdlSql(contractName, sql, version interface{}) *gomock.Call

ExecDdlSql indicates an expected call of ExecDdlSql.

func (*MockStateDBMockRecorder) GetChainConfig

func (mr *MockStateDBMockRecorder) GetChainConfig() *gomock.Call

GetChainConfig indicates an expected call of GetChainConfig.

func (*MockStateDBMockRecorder) GetContractDbName

func (mr *MockStateDBMockRecorder) GetContractDbName(contractName interface{}) *gomock.Call

GetContractDbName indicates an expected call of GetContractDbName.

func (*MockStateDBMockRecorder) GetDbTransaction

func (mr *MockStateDBMockRecorder) GetDbTransaction(txName interface{}) *gomock.Call

GetDbTransaction indicates an expected call of GetDbTransaction.

func (*MockStateDBMockRecorder) GetLastSavepoint

func (mr *MockStateDBMockRecorder) GetLastSavepoint() *gomock.Call

GetLastSavepoint indicates an expected call of GetLastSavepoint.

func (*MockStateDBMockRecorder) GetMemberExtraData

func (mr *MockStateDBMockRecorder) GetMemberExtraData(member interface{}) *gomock.Call

GetMemberExtraData indicates an expected call of GetMemberExtraData.

func (*MockStateDBMockRecorder) InitGenesis

func (mr *MockStateDBMockRecorder) InitGenesis(genesisBlock interface{}) *gomock.Call

InitGenesis indicates an expected call of InitGenesis.

func (*MockStateDBMockRecorder) QueryMulti

func (mr *MockStateDBMockRecorder) QueryMulti(contractName, sql interface{}, values ...interface{}) *gomock.Call

QueryMulti indicates an expected call of QueryMulti.

func (*MockStateDBMockRecorder) QuerySingle

func (mr *MockStateDBMockRecorder) QuerySingle(contractName, sql interface{}, values ...interface{}) *gomock.Call

QuerySingle indicates an expected call of QuerySingle.

func (*MockStateDBMockRecorder) ReadObject

func (mr *MockStateDBMockRecorder) ReadObject(contractName, key interface{}) *gomock.Call

ReadObject indicates an expected call of ReadObject.

func (*MockStateDBMockRecorder) ReadObjects

func (mr *MockStateDBMockRecorder) ReadObjects(contractName, keys interface{}) *gomock.Call

ReadObjects indicates an expected call of ReadObjects.

func (*MockStateDBMockRecorder) RollbackDbTransaction

func (mr *MockStateDBMockRecorder) RollbackDbTransaction(txName interface{}) *gomock.Call

RollbackDbTransaction indicates an expected call of RollbackDbTransaction.

func (*MockStateDBMockRecorder) SelectObject

func (mr *MockStateDBMockRecorder) SelectObject(contractName, startKey, limit interface{}) *gomock.Call

SelectObject indicates an expected call of SelectObject.

type StateDB

type StateDB interface {

	// InitGenesis 创世块写入
	// @Description:
	// @param genesisBlock
	// @return error
	InitGenesis(genesisBlock *serialization.BlockWithSerializedInfo) error

	// CommitBlock commits the state in an atomic operation
	// @Description:
	// @param blockWithRWSet
	// @param isCache
	// @return error
	CommitBlock(blockWithRWSet *serialization.BlockWithSerializedInfo, isCache bool) error

	// GetChainConfig  get last chain config
	// @Description:
	// @return *configPb.ChainConfig
	// @return error
	GetChainConfig() (*configPb.ChainConfig, error)

	// ReadObject returns the state value for given contract name and key, or returns nil if none exists.
	// @Description:
	// @param contractName
	// @param key
	// @return []byte
	// @return error
	ReadObject(contractName string, key []byte) ([]byte, error)

	// ReadObjects returns the state values for given contract name and keys
	ReadObjects(contractName string, keys [][]byte) ([][]byte, error)

	// SelectObject returns an iterator that contains all the key-values between given key ranges.
	// @Description:
	// startKey is included in the results and limit is excluded.
	// @param contractName
	// @param startKey
	// @param limit
	// @return protocol.StateIterator
	// @return error
	SelectObject(contractName string, startKey []byte, limit []byte) (protocol.StateIterator, error)

	// GetLastSavepoint returns the last block height
	// @Description:
	// @return uint64
	// @return error
	GetLastSavepoint() (uint64, error)

	// Close Close is used to close database
	// @Description:
	Close()

	// QuerySingle 不在事务中,直接查询状态数据库,返回一行结果
	// @Description:
	// @param contractName
	// @param sql
	// @param values
	// @return protocol.SqlRow
	// @return error
	QuerySingle(contractName, sql string, values ...interface{}) (protocol.SqlRow, error)

	// QueryMulti  不在事务中,直接查询状态数据库,返回多行结果
	// @Description:
	// @param contractName
	// @param sql
	// @param values
	// @return protocol.SqlRows
	// @return error
	QueryMulti(contractName, sql string, values ...interface{}) (protocol.SqlRows, error)

	// ExecDdlSql
	// @Description: 执行DDL语句
	// @param contractName
	// @param sql
	// @param version
	// @return error
	ExecDdlSql(contractName, sql, version string) error

	// BeginDbTransaction
	// @Description: 启用一个事务
	// @param txName
	// @return protocol.SqlDBTransaction
	// @return error
	BeginDbTransaction(txName string) (protocol.SqlDBTransaction, error)

	// GetDbTransaction
	// @Description: 根据事务名,获得一个已经启用的事务
	// @param txName
	// @return protocol.SqlDBTransaction
	// @return error
	GetDbTransaction(txName string) (protocol.SqlDBTransaction, error)

	// CommitDbTransaction
	// @Description: 提交一个事务
	// @param txName
	// @return error
	CommitDbTransaction(txName string) error

	// RollbackDbTransaction
	// @Description: 回滚一个事务
	// @param txName
	// @return error
	RollbackDbTransaction(txName string) error

	// CreateDatabase
	// @Description: 创建database
	// @param contractName
	// @return error
	CreateDatabase(contractName string) error

	// DropDatabase
	// @Description: 删除一个合约对应的数据库
	// @param contractName
	// @return error
	DropDatabase(contractName string) error

	// GetContractDbName
	// @Description:  获得一个合约对应的状态数据库名
	// @param contractName
	// @return string
	GetContractDbName(contractName string) string

	// GetMemberExtraData
	// @Description:
	// @param member
	// @return *accesscontrol.MemberExtraData
	// @return error
	GetMemberExtraData(member *accesscontrol.Member) (*accesscontrol.MemberExtraData, error)
}

StateDB provides handle to world state instances @Description:

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL