shim

package
v0.0.0-...-523a819 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2019 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

包填充程序为链代码提供API以访问其状态 变量、事务上下文和调用其他链码。

包填充程序为链代码提供API以访问其状态 变量、事务上下文和调用其他链码。

Index

Constants

View Source
const (
	STATE_QUERY_RESULT resultType = iota + 1
	HISTORY_QUERY_RESULT
)
View Source
const (
	LogDebug    = LoggingLevel(logging.DEBUG)
	LogInfo     = LoggingLevel(logging.INFO)
	LogNotice   = LoggingLevel(logging.NOTICE)
	LogWarning  = LoggingLevel(logging.WARNING)
	LogError    = LoggingLevel(logging.ERROR)
	LogCritical = LoggingLevel(logging.CRITICAL)
)

这些常量包含loggingLevel枚举

View Source
const (
	//OK常量-状态代码小于400,背书人将背书。
	//OK表示初始化或调用成功。
	OK = 200

	//错误阈值常量-大于或等于400的状态代码将被视为错误并被背书人拒绝。
	ERRORTHRESHOLD = 400

	//错误常量-默认错误值
	ERROR = 500
)

Variables

This section is empty.

Functions

func Error

func Error(msg string) pb.Response

func IsEnabledForLogLevel

func IsEnabledForLogLevel(logLevel string) bool

IsEnabledForLogLevel检查是否为特定的日志记录级别启用了链码记录器。 主要用于测试

func SetLoggingLevel

func SetLoggingLevel(level LoggingLevel)

setLoggingLevel允许Go语言链码设置 它的垫片。

func SetupChaincodeLogging

func SetupChaincodeLogging()

设置链码日志记录设置链码日志记录格式和级别 核心链码记录格式、核心链码记录级别的值 和core\u chaincode\u logging\u垫片集,从core.yaml通过chaincode\u support.go

func Start

func Start(cc Chaincode) error

链码。

func StartInProc

func StartInProc(env []string, args []string, cc Chaincode, recv <-chan *pb.ChaincodeMessage, send chan<- *pb.ChaincodeMessage) error

StartInProc是系统链码引导的入口点。它不是一个 链码的API。

func Success

func Success(payload []byte) pb.Response

Types

type Chaincode

type Chaincode interface {
	//
	//已首次建立,允许链码
	//初始化其内部数据
	Init(stub ChaincodeStubInterface) pb.Response

	//调用Invoke以更新或查询建议交易中的分类帐。
	//更新后的状态变量不会提交到分类帐,直到
	//事务已提交。
	Invoke(stub ChaincodeStubInterface) pb.Response
}

链码接口必须由所有链码实现。织物运行 按指定调用这些函数的事务。

type ChaincodeLogger

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

chaincodelogger是日志对象的抽象,供 链码。这些对象是由newlogger API创建的。

func NewLogger

func NewLogger(name string) *ChaincodeLogger

NewLogger允许Go语言链码创建一个或多个日志记录 其日志的格式将与和临时一致的对象 与填充程序接口创建的日志交错。创建的日志 通过提供的名称,可以将此对象与填充程序日志区分开来, 会出现在日志中。

func (*ChaincodeLogger) Critical

func (c *ChaincodeLogger) Critical(args ...interface{})

关键日志总是出现;不能禁用。

func (*ChaincodeLogger) Criticalf

func (c *ChaincodeLogger) Criticalf(format string, args ...interface{})

关键日志总是出现;不能禁用。

func (*ChaincodeLogger) Debug

func (c *ChaincodeLogger) Debug(args ...interface{})

只有当chaincodelogger loggingLevel设置为时,才会出现调试日志。 LogDebug。

func (*ChaincodeLogger) Debugf

func (c *ChaincodeLogger) Debugf(format string, args ...interface{})

只有当chaincodelogger loggingLevel设置为时,才会出现debugf日志。 LogDebug。

func (*ChaincodeLogger) Error

func (c *ChaincodeLogger) Error(args ...interface{})

如果chaincodelogger loggingLevel设置为,则将显示错误日志。 logerror、logwarning、lognotice、loginfo或logdebug。

func (*ChaincodeLogger) Errorf

func (c *ChaincodeLogger) Errorf(format string, args ...interface{})

如果chaincodelogger loggingLevel设置为 logerror、logwarning、lognotice、loginfo或logdebug。

func (*ChaincodeLogger) Info

func (c *ChaincodeLogger) Info(args ...interface{})

如果chaincodelogger loggingLevel设置为

func (*ChaincodeLogger) Infof

func (c *ChaincodeLogger) Infof(format string, args ...interface{})

如果chaincodelogger loggingLevel设置为 loginfo或logdebug。

func (*ChaincodeLogger) IsEnabledFor

func (c *ChaincodeLogger) IsEnabledFor(level LoggingLevel) bool

如果记录器被启用在 给定的日志记录级别。

func (*ChaincodeLogger) Notice

func (c *ChaincodeLogger) Notice(args ...interface{})

如果chaincodelogger loggingLevel设置为 lognotice、loginfo或logdebug。

func (*ChaincodeLogger) Noticef

func (c *ChaincodeLogger) Noticef(format string, args ...interface{})

如果设置ChaincodeLogger LoggingLevel,将出现通知日志。 lognotice、loginfo或logdebug。

func (*ChaincodeLogger) SetLevel

func (c *ChaincodeLogger) SetLevel(level LoggingLevel)

setlevel设置链码记录器的日志记录级别。注意,目前 当日志记录程序 因此,日志记录程序应该被赋予除“shim”之外的唯一名称。

func (*ChaincodeLogger) Warning

func (c *ChaincodeLogger) Warning(args ...interface{})

如果chaincodelogger loggingLevel设置为,将显示警告日志。 logwarning、lognotice、loginfo或logdebug。

func (*ChaincodeLogger) Warningf

func (c *ChaincodeLogger) Warningf(format string, args ...interface{})

如果chaincodelogger loggingLevel设置为,将显示警告日志。 logwarning、lognotice、loginfo或logdebug。

type ChaincodeStub

type ChaincodeStub struct {
	TxID      string
	ChannelId string
	// contains filtered or unexported fields
}

chaincodestub是传递给chaincode的对象,用于对 API。

func (*ChaincodeStub) CreateCompositeKey

func (stub *ChaincodeStub) CreateCompositeKey(objectType string, attributes []string) (string, error)

可在interfaces.go中找到CreateCompositeKey文档

func (*ChaincodeStub) DelPrivateData

func (stub *ChaincodeStub) DelPrivateData(collection string, key string) error

delprivatedata文档可以在interfaces.go中找到

func (*ChaincodeStub) DelState

func (stub *ChaincodeStub) DelState(key string) error

Delstate文档可以在interfaces.go中找到

func (*ChaincodeStub) GetArgs

func (stub *ChaincodeStub) GetArgs() [][]byte

func (*ChaincodeStub) GetArgsSlice

func (stub *ChaincodeStub) GetArgsSlice() ([]byte, error)

在interfaces.go中可以找到getargsslice文档

func (*ChaincodeStub) GetBinding

func (stub *ChaincodeStub) GetBinding() ([]byte, error)

在interfaces.go中可以找到getbinding文档

func (*ChaincodeStub) GetChannelID

func (stub *ChaincodeStub) GetChannelID() string

GETCHANNEURID返回建议的信道

func (*ChaincodeStub) GetCreator

func (stub *ChaincodeStub) GetCreator() ([]byte, error)

getcreator文档可以在interfaces.go中找到

func (*ChaincodeStub) GetDecorations

func (stub *ChaincodeStub) GetDecorations() map[string][]byte

func (*ChaincodeStub) GetFunctionAndParameters

func (stub *ChaincodeStub) GetFunctionAndParameters() (function string, params []string)

GetFunctionAndParameters documentation can be found in interfaces.go

func (*ChaincodeStub) GetHistoryForKey

func (stub *ChaincodeStub) GetHistoryForKey(key string) (HistoryQueryIteratorInterface, error)

在interfaces.go中可以找到getHistoryForkey文档

func (*ChaincodeStub) GetPrivateData

func (stub *ChaincodeStub) GetPrivateData(collection string, key string) ([]byte, error)

getprivatedata文档可以在interfaces.go中找到

func (*ChaincodeStub) GetPrivateDataByPartialCompositeKey

func (stub *ChaincodeStub) GetPrivateDataByPartialCompositeKey(collection, objectType string, attributes []string) (StateQueryIteratorInterface, error)

getprivatedatabypartalcompositekey文档可以在interfaces.go中找到。

func (*ChaincodeStub) GetPrivateDataByRange

func (stub *ChaincodeStub) GetPrivateDataByRange(collection, startKey, endKey string) (StateQueryIteratorInterface, error)

在interfaces.go中可以找到getprivatedatabyrange文档

func (*ChaincodeStub) GetPrivateDataQueryResult

func (stub *ChaincodeStub) GetPrivateDataQueryResult(collection, query string) (StateQueryIteratorInterface, error)

在interfaces.go中可以找到getprivatedataqueryresult文档

func (*ChaincodeStub) GetPrivateDataValidationParameter

func (stub *ChaincodeStub) GetPrivateDataValidationParameter(collection, key string) ([]byte, error)

在interfaces.go中可以找到getprivatedatavalidationparameter文档

func (*ChaincodeStub) GetQueryResult

func (stub *ChaincodeStub) GetQueryResult(query string) (StateQueryIteratorInterface, error)

在interfaces.go中可以找到getqueryresult文档

func (*ChaincodeStub) GetQueryResultWithPagination

func (stub *ChaincodeStub) GetQueryResultWithPagination(query string, pageSize int32,
	bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*ChaincodeStub) GetSignedProposal

func (stub *ChaincodeStub) GetSignedProposal() (*pb.SignedProposal, error)

在interfaces.go中可以找到getSignedProposal文档

func (*ChaincodeStub) GetState

func (stub *ChaincodeStub) GetState(key string) ([]byte, error)

在interfaces.go中可以找到getstate文档

func (*ChaincodeStub) GetStateByPartialCompositeKey

func (stub *ChaincodeStub) GetStateByPartialCompositeKey(objectType string, attributes []string) (StateQueryIteratorInterface, error)

可以通过chaincode调用getstatebypartialcompositekey函数来查询 基于给定的部分复合键的状态。此函数返回 迭代器,可用于对前缀为 匹配给定的部分复合键。此函数只能用于 部分复合键。对于完整的复合键,带有空响应的ITER 将被退回。

func (*ChaincodeStub) GetStateByPartialCompositeKeyWithPagination

func (stub *ChaincodeStub) GetStateByPartialCompositeKeyWithPagination(objectType string, keys []string,
	pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*ChaincodeStub) GetStateByRange

func (stub *ChaincodeStub) GetStateByRange(startKey, endKey string) (StateQueryIteratorInterface, error)

在interfaces.go中可以找到GetStateByRange文档

func (*ChaincodeStub) GetStateByRangeWithPagination

func (stub *ChaincodeStub) GetStateByRangeWithPagination(startKey, endKey string, pageSize int32,
	bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*ChaincodeStub) GetStateValidationParameter

func (stub *ChaincodeStub) GetStateValidationParameter(key string) ([]byte, error)

在interfaces.go中可以找到getStateValidationParameter文档

func (*ChaincodeStub) GetStringArgs

func (stub *ChaincodeStub) GetStringArgs() []string

func (*ChaincodeStub) GetTransient

func (stub *ChaincodeStub) GetTransient() (map[string][]byte, error)

在interfaces.go中可以找到getTransient文档

func (*ChaincodeStub) GetTxID

func (stub *ChaincodeStub) GetTxID() string

gettxid返回建议的事务ID

func (*ChaincodeStub) GetTxTimestamp

func (stub *ChaincodeStub) GetTxTimestamp() (*timestamp.Timestamp, error)

在interfaces.go中可以找到getxtimestamp文档

func (*ChaincodeStub) InvokeChaincode

func (stub *ChaincodeStub) InvokeChaincode(chaincodeName string, args [][]byte, channel string) pb.Response

func (*ChaincodeStub) PutPrivateData

func (stub *ChaincodeStub) PutPrivateData(collection string, key string, value []byte) error

PutPrivateData文档可以在interfaces.go中找到。

func (*ChaincodeStub) PutState

func (stub *ChaincodeStub) PutState(key string, value []byte) error

Putstate文档可以在interfaces.go中找到

func (*ChaincodeStub) SetEvent

func (stub *ChaincodeStub) SetEvent(name string, payload []byte) error

func (*ChaincodeStub) SetPrivateDataValidationParameter

func (stub *ChaincodeStub) SetPrivateDataValidationParameter(collection, key string, ep []byte) error

setprivatedatavalidationparameter文档可以在interfaces.go中找到

func (*ChaincodeStub) SetStateValidationParameter

func (stub *ChaincodeStub) SetStateValidationParameter(key string, ep []byte) error

可在interfaces.go中找到setstatevalidationparameter文档

func (*ChaincodeStub) SplitCompositeKey

func (stub *ChaincodeStub) SplitCompositeKey(compositeKey string) (string, []string, error)

splitcompositekey文档可以在interfaces.go中找到

type ChaincodeStubInterface

type ChaincodeStubInterface interface {
	//getargs返回用于chaincode init和invoke的参数
	//作为字节数组的数组。
	GetArgs() [][]byte

	//GetStringArgs返回用于chaincode init和
	//作为字符串数组调用。仅当客户端通过时才使用GetStringArgs
	//用作字符串的参数。
	GetStringArgs() []string

	//GetFunctionAndParameters返回第一个参数作为函数
	//名称和其他参数作为字符串数组中的参数。
	//仅当客户端传递预期的参数时才使用GetFunctionAndParameters
	//用作字符串。
	GetFunctionAndParameters() (string, []string)

	//getargsslice返回用于chaincode init和
	//作为字节数组调用
	GetArgsSlice() ([]byte, error)

	//gettxid返回事务建议的tx_id,该id对于
	//交易和每个客户。参见protos/common/common.proto中的channelheader
	//更多详情。
	GetTxID() string

	//getchannelid返回建议发送到的要处理链码的通道。
	//这将是事务建议的通道ID(请参见通道标题
	//在protos/common/common.proto)中,除非链码正在调用另一个
	//另一个频道
	GetChannelID() string

	//invoke chaincode使用
	//相同的事务上下文;也就是说,调用chaincode的chaincode不会
	//
	//如果被调用的链码在同一个通道上,则只需添加被调用的
	//对调用事务进行chaincode读集和写集。
	//
	//只有响应返回到调用链代码;任何putstate调用
	//从被调用的链码对分类帐没有任何影响;也就是说,
	//不同通道上被调用的链码将没有其读取集
	//以及应用于事务的写入集。只有呼叫链的
	//读集和写集将应用于事务。有效地
	//
	//在随后的提交阶段参与状态验证检查。
	//如果“channel”为空,则假定调用方的频道。
	InvokeChaincode(chaincodeName string, args [][]byte, channel string) pb.Response

	//GetState从
	//分类帐。注意,getstate不从writeset中读取数据,因为
	//
	//考虑putstate修改的尚未提交的数据。
	//如果键在状态数据库中不存在,则返回(nil,nil)。
	GetState(key string) ([]byte, error)

	//putstate将指定的“key”和“value”放入事务
	//写集为数据写入建议。Putstate不影响分类帐
	//直到事务被验证并成功提交。
	//简单键不能是空字符串,也不能以null开头
	//字符(0x00),以避免范围查询与
	//复合键,内部以0x00作为前缀作为复合键
	//关键命名空间。
	PutState(key string, value []byte) error

	//Delstate记录要在的写入集中删除的指定“key”
	//交易建议。“key”及其值将从中删除
	//交易验证并成功提交时的分类帐。
	DelState(key string) error

	//setstatevalidationparameter设置“key”的密钥级认可策略。
	SetStateValidationParameter(key string, ep []byte) error

	//GetStateValidationParameter检索密钥级认可策略
	//用于“钥匙”。请注意,这将引入对“key”的读取依赖项。
	//事务的readset。
	GetStateValidationParameter(key string) ([]byte, error)

	//GetStateByRange返回在
	//分类帐。迭代器可用于遍历所有键
	//在startkey(包含)和endkey(不包含)之间。
	//但是,如果startkey和endkey之间的键数大于
	//totalquerylimit(在core.yaml中定义),不能使用此迭代器
	//to fetch all keys (results will be capped by the totalQueryLimit).
	//迭代器按词法顺序返回键。注释
	//startkey和endkey可以是空字符串,这意味着无边界的范围
	//开始或结束时查询。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//在验证阶段重新执行查询以确保结果集
	//自事务认可后未更改(检测到幻象读取)。
	GetStateByRange(startKey, endKey string) (StateQueryIteratorInterface, error)

	//GetStateByRangeWithPagination返回在
	//分类帐。迭代器可用于在startkey(包括startkey)之间提取键。
	//和endkey(独占)。
	//当空字符串作为值传递给bookmark参数时,返回的
	//迭代器可用于在startkey之间提取第一个“pagesize”键
	//
	//当书签为非空字符串时,迭代器可用于获取
	//书签(含)和endkey(不含)之间的第一个“pagesize”键。
	//
	//可以用作书签参数的值。否则,空字符串必须
	//作为书签传递。
	//迭代器按词法顺序返回键。注释
	//startkey和endkey可以是空字符串,这意味着无边界的范围
	//开始或结束时查询。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//
	GetStateByRangeWithPagination(startKey, endKey string, pageSize int32,
		bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

	//GetStateByPartialCompositeKey根据
	//给定的部分复合键。此函数返回迭代器
	//它可用于遍历前缀匹配的所有组合键
	//给定的部分复合键。但是,如果匹配组合的数目
	//键大于totalquerylimit(在core.yaml中定义),此迭代器
	//无法用于提取所有匹配的键(结果将受totalquerylimit的限制)。
	//“objectType”和属性只应有有效的utf8字符串和
	//不应包含U+0000(零字节)和U+10ffff(最大和未分配的代码点)。
	//请参见相关函数splitcompositekey和creatcompositekey。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//在验证阶段重新执行查询以确保结果集
	//自事务认可后未更改(检测到幻象读取)。
	GetStateByPartialCompositeKey(objectType string, keys []string) (StateQueryIteratorInterface, error)

	//GetStateByPartialCompositeKeyWithPagination根据
	//给定的部分复合键。此函数返回迭代器
	//它可以用于在组合键上迭代,
	//前缀与给定的部分复合键匹配。
	//当空字符串作为值传递给bookmark参数时,返回的
	//迭代器可用于获取前缀为
	//
	//当书签为非空字符串时,迭代器可用于获取
	//书签(包含)和最后一个匹配项之间的第一个“pagesize”键
	//复合键。
	//请注意,查询结果(responseMetadata)的前一页中只存在书签。
	//可以用作书签参数的值。否则,空字符串必须
	//作为书签传递。
	//“objectType”和属性只应有有效的utf8字符串
	//不应包含U+0000(零字节)和U+10ffff(最大和未分配
	//代码点)。请参见相关函数splitcompositekey和creatcompositekey。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//
	GetStateByPartialCompositeKeyWithPagination(objectType string, keys []string,
		pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

	//CreateCompositeKey将给定的“attributes”组合成一个组合
	//关键。对象类型和属性应该只有有效的utf8
	//字符串,不应包含u+0000(零字节)和u+10ffff
	//(最大和未分配的代码点)。
	//生成的复合键可以用作putstate()中的键。
	CreateCompositeKey(objectType string, attributes []string) (string, error)

	//splitcompositekey将指定的键拆分为
	//组合键已形成。在范围查询期间找到复合键
	//或者部分组合键查询因此可以拆分为
	//复合零件。
	SplitCompositeKey(compositeKey string) (string, []string, error)

	//GetQueryResult对状态数据库执行“富”查询。它是
	//仅支持富查询的状态数据库,
	//CouCHDB。查询字符串采用本机语法
	//基础状态数据库的。返回迭代器
	//它可以用于遍历查询结果集中的所有键。
	//但是,如果查询结果集中的键数大于
	//totalquerylimit(在core.yaml中定义),不能使用此迭代器
	//获取查询结果集中的所有键(结果将受
	//totalquerylimit)。
	//在验证阶段不重新执行查询,幻象读取为
	//未检测到。也就是说,其他承诺的交易可能已经增加,
	//更新或删除了影响结果集的键,但这不会
	//在验证/提交时检测。易受此影响的应用程序
	//因此,不应将GetQueryResult用作更新的事务的一部分
	//并且应该限制使用只读链码操作。
	GetQueryResult(query string) (StateQueryIteratorInterface, error)

	//GetQueryResultWithPagination对状态数据库执行“富”查询。
	//
	//例如,CouCHDB。查询字符串采用本机语法
	//基础状态数据库的。返回迭代器
	//它可以用来迭代查询结果集中的键。
	//当空字符串作为值传递给bookmark参数时,返回的
	//迭代器可用于获取查询结果的第一个“pageSize”。
	//当书签为非空字符串时,迭代器可用于获取
	//书签和查询结果中最后一个键之间的第一个“pagesize”键。
	//注意,只有书签出现在查询结果的前一页(responseMetadata)
	//可以用作书签参数的值。否则,空字符串
	//必须作为书签传递。
	//此调用仅在只读事务中受支持。
	GetQueryResultWithPagination(query string, pageSize int32,
		bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

	//GetHistoryForkey返回键值的历史记录。
	//对于每个历史键更新,历史值和关联的
	//返回事务ID和时间戳。时间戳是
	//timestamp provided by the client in the proposal header.
	//GetHistoryForkey需要对等配置
	//core.ledger.history.enableHistoryDatabase为true。
	//在验证阶段不重新执行查询,幻象读取为
	//未检测到。也就是说,其他提交的事务可能已更新
	//同时影响结果集的键,而这不会
	//在验证/提交时检测到。易受此影响的应用程序
	//因此,不应将getHistoryForkey用作
	//更新分类帐,并应限制使用只读链码操作。
	GetHistoryForKey(key string) (HistoryQueryIteratorInterface, error)

	//getprivatedata从指定的
	//‘收藏’。注意,getprivatedata不会从
	//private writeset,尚未提交到“collection”。在
	//换句话说,getprivatedata不考虑putprivatedata修改的数据
	//还没有承诺。
	GetPrivateData(collection, key string) ([]byte, error)

	//PutPrivateData puts the specified `key` and `value` into the transaction's
	//私有写集。注意,只有私有写集的哈希进入
	//交易建议响应(发送给发出
	//transaction) and the actual private writeset gets temporarily stored in a
	//transient store. PutPrivateData doesn't effect the `collection` until the
	//事务已验证并成功提交。简单键不能是
	//空字符串,不能以空字符(0x00)开头,以便
	//避免与复合键的范围查询冲突,复合键在内部
	//prefixed with 0x00 as composite key namespace.
	PutPrivateData(collection string, key string, value []byte) error

	//DelState records the specified `key` to be deleted in the private writeset of
	//交易。注意,只有私有写集的哈希进入
	//交易建议响应(发送给发出
	//而实际的私有写集临时存储在
	//暂时存储。“key”及其值将从集合中删除
	//当事务被验证并成功提交时。
	DelPrivateData(collection, key string) error

	//setprivatedatavalidationparameter设置密钥级认可策略
	//对于“key”指定的私有数据。
	SetPrivateDataValidationParameter(collection, key string, ep []byte) error

	//getprivatedatavalidationparameter检索密钥级别认可
	//由'key'指定的私有数据的策略。注意,这介绍了
	//对事务的readset中“key”的读取依赖项。
	GetPrivateDataValidationParameter(collection, key string) ([]byte, error)

	//GetPrivateDataByRange返回一组键上的范围迭代器
	//提供私人收藏。迭代器可用于遍历所有键
	//在startkey(包含)和endkey(不包含)之间。
	//迭代器按词法顺序返回键。注释
	//startkey和endkey可以是空字符串,这意味着无边界的范围
	//开始或结束时查询。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//在验证阶段重新执行查询以确保结果集
	//自事务认可后未更改(检测到幻象读取)。
	GetPrivateDataByRange(collection, startKey, endKey string) (StateQueryIteratorInterface, error)

	//getprivatedatabypartialcompositekey查询给定private中的状态
	//基于给定的部分组合键的集合。此函数返回
	//一种迭代器,可用于对前缀为
	//匹配给定的部分复合键。“objectType”和属性是
	//预期只有有效的utf8字符串,不应包含
	//U+0000(零字节)和U+10ffff(最大和未分配的代码点)。
	//请参见相关函数splitcompositekey和creatcompositekey。
	//完成后,对返回的StateQueryIteratorInterface对象调用Close()。
	//在验证阶段重新执行查询以确保结果集
	//自事务认可后未更改(检测到幻象读取)。
	GetPrivateDataByPartialCompositeKey(collection, objectType string, keys []string) (StateQueryIteratorInterface, error)

	//getprivatedataqueryresult对给定的private执行“rich”查询
	//收集。它只支持支持富查询的状态数据库,
	//CouCHDB。查询字符串采用本机语法
	//基础状态数据库的。返回迭代器
	//它可以用于在查询结果集上迭代(下一步)。
	//在验证阶段不重新执行查询,幻象读取为
	//未检测到。也就是说,其他承诺的交易可能已经增加,
	//更新或删除了影响结果集的键,但这不会
	//在验证/提交时检测。易受此影响的应用程序
	//因此,不应将GetQueryResult用作更新的事务的一部分
	//并且应该限制使用只读链码操作。
	GetPrivateDataQueryResult(collection, query string) (StateQueryIteratorInterface, error)

	//getcreator返回“signatureheader.creator”(例如标识)
	//“signedProposal”的。这是代理(或用户)的标识
	//提交交易记录。
	GetCreator() ([]byte, error)

	//getTransient返回“chaincodeProposalPayLoad.Transient”字段。
	//
	//可能用于实现某种形式的应用程序级别
	//保密。此字段的内容,如
	//“chaincodeProposalPayLoad”应该始终
	//从交易中省略,并从分类帐中排除。
	GetTransient() (map[string][]byte, error)

	//GetBinding返回用于强制
	//
	//以上)投标书本身。这有助于避免可能的重播
	//攻击。
	GetBinding() ([]byte, error)

	//GetDecorations返回有关建议的其他数据(如果适用)
	//
	//peer, which append or mutate the chaincode input passed to the chaincode.
	GetDecorations() map[string][]byte

	//GetSignedProposal返回SignedProposal对象,该对象包含
	//
	GetSignedProposal() (*pb.SignedProposal, error)

	//gettexTimeStamp返回创建事务时的时间戳。这个
	//从Transaction ChannelHeader中获取,因此它将指示
	//客户的时间戳和在所有背书人中具有相同的值。
	GetTxTimestamp() (*timestamp.Timestamp, error)

	//setEvent允许chaincode在响应中设置一个事件
	//
	//在提交块中的事务中可用,无论
	//交易的有效性。
	SetEvent(name string, payload []byte) error
}

chaincodestubinterface被可部署的chaincode应用程序用于访问和 修改分类帐

type CommonIterator

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

CommonIterator文档可以在interfaces.go中找到

func (*CommonIterator) Close

func (iter *CommonIterator) Close() error

关闭文档可以在interfaces.go中找到。

func (*CommonIterator) HasNext

func (iter *CommonIterator) HasNext() bool

HasNext文档可以在interfaces.go中找到

type CommonIteratorInterface

type CommonIteratorInterface interface {
	//如果范围查询迭代器包含其他键,则hasNext返回true
	//和价值观。
	HasNext() bool

	//关闭关闭迭代器。完成后应调用此函数
	//从迭代器读取以释放资源。
	Close() error
}

CommonIteratorInterface允许链代码检查是否还有其他结果 从迭代器中提取并在完成时关闭它。

type Handler

type Handler struct {
	//需要锁定以防止链码尝试
	//对对等机的并发请求
	sync.Mutex

	To         string
	ChatStream PeerChaincodeStream
	// contains filtered or unexported fields
}

链代码的填充端的处理程序处理程序实现。

type HistoryQueryIterator

type HistoryQueryIterator struct {
	*CommonIterator
}

HistoryQueryIterator文档可以在interfaces.go中找到

func (*HistoryQueryIterator) Next

type HistoryQueryIteratorInterface

type HistoryQueryIteratorInterface interface {
	//继承hasNext()并关闭()
	CommonIteratorInterface

	//Next返回历史查询迭代器中的下一个键和值。
	Next() (*queryresult.KeyModification, error)
}

HistoryQueryIteratorInterface允许链代码在一组 历史查询返回的键/值对。

type LoggingLevel

type LoggingLevel logging.Level

LoggingLevel是控制 链码日志记录。

func LogLevel

func LogLevel(levelString string) (LoggingLevel, error)

loglevel转换从critical、error、 WARNING, NOTICE, INFO or DEBUG into an element of the LoggingLevel 类型。如果出现错误,返回的级别为logerror。

type MockQueryIteratorInterface

type MockQueryIteratorInterface interface {
	StateQueryIteratorInterface
}

MockQueryIteratorInterface允许链代码在一组 范围查询返回的键/值对。 TODO:一旦在mockstub中实现了执行查询和历史查询, 我们需要更新这个接口

type MockStateRangeQueryIterator

type MockStateRangeQueryIterator struct {
	Closed   bool
	Stub     *MockStub
	StartKey string
	EndKey   string
	Current  *list.Element
}

func NewMockStateRangeQueryIterator

func NewMockStateRangeQueryIterator(stub *MockStub, startKey string, endKey string) *MockStateRangeQueryIterator

func (*MockStateRangeQueryIterator) Close

func (iter *MockStateRangeQueryIterator) Close() error

关闭关闭范围查询迭代器。完成后应调用此函数 从迭代器读取以释放资源。

func (*MockStateRangeQueryIterator) HasNext

func (iter *MockStateRangeQueryIterator) HasNext() bool

如果范围查询迭代器包含其他键,则hasNext返回true 和价值观。

func (*MockStateRangeQueryIterator) Next

Next返回范围查询迭代器中的下一个键和值。

func (*MockStateRangeQueryIterator) Print

func (iter *MockStateRangeQueryIterator) Print()

type MockStub

type MockStub struct {

	//一个好名字,可以用来记录
	Name string

	//状态保留名称-值对
	State map[string][]byte

	//键按词汇顺序存储映射值列表
	Keys *list.List

	//可从此mockstub调用的其他mockstub链码的注册列表
	Invokables map[string]*MockStub

	//在被调用/部署时存储事务UUID
	//TODO如果链码使用递归,这可能需要一个TxID堆栈,或者可能是一个引用计数映射
	TxID string

	TxTimestamp *timestamp.Timestamp

	//存储建议的频道ID
	ChannelID string

	PvtState map[string]map[string][]byte

	//存储按密钥认可策略,第一个映射索引是集合,第二个映射索引是密钥
	EndorsementPolicies map[string]map[string][]byte

	//存储链码事件的通道
	ChaincodeEventsChannel chan *pb.ChaincodeEvent

	Decorations map[string][]byte
	// contains filtered or unexported fields
}

mockstub是用于单元测试链码的chaincodestub接口的一种实现。 在对init或invoke的单元测试调用中,使用这个函数而不是chaincodestub。

func NewMockStub

func NewMockStub(name string, cc Chaincode) *MockStub

初始化内部状态映射的构造函数

func (*MockStub) CreateCompositeKey

func (stub *MockStub) CreateCompositeKey(objectType string, attributes []string) (string, error)

CreateCompositeKey组合属性列表 形成复合键。

func (*MockStub) DelPrivateData

func (stub *MockStub) DelPrivateData(collection string, key string) error

func (*MockStub) DelState

func (stub *MockStub) DelState(key string) error

Delstate从分类帐中删除指定的“key”及其值。

func (*MockStub) GetArgs

func (stub *MockStub) GetArgs() [][]byte

func (*MockStub) GetArgsSlice

func (stub *MockStub) GetArgsSlice() ([]byte, error)

未实施

func (*MockStub) GetBinding

func (stub *MockStub) GetBinding() ([]byte, error)

未实施

func (*MockStub) GetChannelID

func (stub *MockStub) GetChannelID() string

func (*MockStub) GetCreator

func (stub *MockStub) GetCreator() ([]byte, error)

未实施

func (*MockStub) GetDecorations

func (stub *MockStub) GetDecorations() map[string][]byte

func (*MockStub) GetFunctionAndParameters

func (stub *MockStub) GetFunctionAndParameters() (function string, params []string)

func (*MockStub) GetHistoryForKey

func (stub *MockStub) GetHistoryForKey(key string) (HistoryQueryIteratorInterface, error)

可以通过chaincode调用getHistoryForkey函数以返回 关键值跨越时间。GetHistoryForkey用于只读查询。

func (*MockStub) GetPrivateData

func (stub *MockStub) GetPrivateData(collection string, key string) ([]byte, error)

func (*MockStub) GetPrivateDataByPartialCompositeKey

func (stub *MockStub) GetPrivateDataByPartialCompositeKey(collection, objectType string, attributes []string) (StateQueryIteratorInterface, error)

func (*MockStub) GetPrivateDataByRange

func (stub *MockStub) GetPrivateDataByRange(collection, startKey, endKey string) (StateQueryIteratorInterface, error)

func (*MockStub) GetPrivateDataQueryResult

func (stub *MockStub) GetPrivateDataQueryResult(collection, query string) (StateQueryIteratorInterface, error)

func (*MockStub) GetPrivateDataValidationParameter

func (stub *MockStub) GetPrivateDataValidationParameter(collection, key string) ([]byte, error)

func (*MockStub) GetQueryResult

func (stub *MockStub) GetQueryResult(query string) (StateQueryIteratorInterface, error)

可以通过chaincode调用getqueryresult函数来执行 对状态数据库的富查询。仅受状态数据库实现支持 支持丰富的查询。查询字符串的语法为基础 状态数据库。返回一个迭代器,它可以用来迭代(下一步) 查询结果集

func (*MockStub) GetQueryResultWithPagination

func (stub *MockStub) GetQueryResultWithPagination(query string, pageSize int32,
	bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*MockStub) GetSignedProposal

func (stub *MockStub) GetSignedProposal() (*pb.SignedProposal, error)

未实施

func (*MockStub) GetState

func (stub *MockStub) GetState(key string) ([]byte, error)

GetState从分类帐中检索给定键的值

func (*MockStub) GetStateByPartialCompositeKey

func (stub *MockStub) GetStateByPartialCompositeKey(objectType string, attributes []string) (StateQueryIteratorInterface, error)

可以通过chaincode调用getstatebypartialcompositekey函数来查询 基于给定的部分复合键的状态。此函数返回 迭代器,可用于对前缀为 匹配给定的部分复合键。此函数只能用于 部分复合键。对于完整的复合键,带有空响应的ITER 将被退回。

func (*MockStub) GetStateByPartialCompositeKeyWithPagination

func (stub *MockStub) GetStateByPartialCompositeKeyWithPagination(objectType string, keys []string,
	pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*MockStub) GetStateByRange

func (stub *MockStub) GetStateByRange(startKey, endKey string) (StateQueryIteratorInterface, error)

func (*MockStub) GetStateByRangeWithPagination

func (stub *MockStub) GetStateByRangeWithPagination(startKey, endKey string, pageSize int32,
	bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error)

func (*MockStub) GetStateValidationParameter

func (stub *MockStub) GetStateValidationParameter(key string) ([]byte, error)

func (*MockStub) GetStringArgs

func (stub *MockStub) GetStringArgs() []string

func (*MockStub) GetTransient

func (stub *MockStub) GetTransient() (map[string][]byte, error)

未实施

func (*MockStub) GetTxID

func (stub *MockStub) GetTxID() string

func (*MockStub) GetTxTimestamp

func (stub *MockStub) GetTxTimestamp() (*timestamp.Timestamp, error)

func (*MockStub) InvokeChaincode

func (stub *MockStub) InvokeChaincode(chaincodeName string, args [][]byte, channel string) pb.Response

例如stub1.invokeChaincode(“stub2hash”,funcargs,channel) 在调用此函数之前,请确保创建另一个mockstub stub2,调用stub2.mockinit(uuid、func、args) 并通过调用stub1.mockpeerchaincode(“stub2hash”,stub2)将其注册到stub1。

func (*MockStub) MockInit

func (stub *MockStub) MockInit(uuid string, args [][]byte) pb.Response

初始化此链码,同时启动和结束事务。

func (*MockStub) MockInvoke

func (stub *MockStub) MockInvoke(uuid string, args [][]byte) pb.Response

调用这个链码,也可以启动和结束一个事务。

func (*MockStub) MockInvokeWithSignedProposal

func (stub *MockStub) MockInvokeWithSignedProposal(uuid string, args [][]byte, sp *pb.SignedProposal) pb.Response

调用这个链码,也可以启动和结束一个事务。

func (*MockStub) MockPeerChaincode

func (stub *MockStub) MockPeerChaincode(invokableChaincodeName string, otherStub *MockStub)

Register a peer chaincode with this MockStub

OtherStub是对等机的模拟存根,已初始化

func (*MockStub) MockTransactionEnd

func (stub *MockStub) MockTransactionEnd(uuid string)

结束模拟事务,清除UUID。

func (*MockStub) MockTransactionStart

func (stub *MockStub) MockTransactionStart(txid string)

用于向链码指示它是事务的一部分。 当链码互相调用时,这一点很重要。 mockstub目前不支持并发事务。

func (*MockStub) PutPrivateData

func (stub *MockStub) PutPrivateData(collection string, key string, value []byte) error

func (*MockStub) PutState

func (stub *MockStub) PutState(key string, value []byte) error

putstate将指定的“value”和“key”写入分类帐。

func (*MockStub) SetEvent

func (stub *MockStub) SetEvent(name string, payload []byte) error

func (*MockStub) SetPrivateDataValidationParameter

func (stub *MockStub) SetPrivateDataValidationParameter(collection, key string, ep []byte) error

func (*MockStub) SetStateValidationParameter

func (stub *MockStub) SetStateValidationParameter(key string, ep []byte) error

func (*MockStub) SplitCompositeKey

func (stub *MockStub) SplitCompositeKey(compositeKey string) (string, []string, error)

SplitCompositeKey将组合键拆分为属性 在其上形成复合键。

type PeerChaincodeStream

type PeerChaincodeStream interface {
	Send(*pb.ChaincodeMessage) error
	Recv() (*pb.ChaincodeMessage, error)
	CloseSend() error
}

对等端和链码实例之间的流的peer chaincode stream接口。

type SendPanicFailure

type SendPanicFailure string

传感器故障

func (SendPanicFailure) Error

func (e SendPanicFailure) Error() string

type StateQueryIterator

type StateQueryIterator struct {
	*CommonIterator
}

StateQueryIterator文档可以在interfaces.go中找到

func (*StateQueryIterator) Next

func (iter *StateQueryIterator) Next() (*queryresult.KV, error)

type StateQueryIteratorInterface

type StateQueryIteratorInterface interface {
	//继承hasNext()并关闭()
	CommonIteratorInterface

	//Next返回范围中的下一个键和值,并执行查询迭代器。
	Next() (*queryresult.KV, error)
}

StateQueryIteratorInterface允许链代码在一组 范围和执行查询返回的键/值对。

Directories

Path Synopsis
ext

Jump to

Keyboard shortcuts

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