utils

package module
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2022 License: Apache-2.0 Imports: 37 Imported by: 54

Documentation

Index

Constants

View Source
const (
	// PrefixContractInfo prefix of contract info
	PrefixContractInfo = "Contract:"
	// PrefixContractByteCode prefix of contract bytecode
	PrefixContractByteCode = "ContractByteCode:"
)
View Source
const DecBase = 10

DecBase 10

View Source
const TopicTableColumnDdl = `` /* 494-byte string literal not displayed */

TopicTableColumnDdl describe topic table column

View Source
const TopicTableIndex = `` /* 281-byte string literal not displayed */

TopicTableIndex describe topic table index

View Source
const TopicTableUniqueKey = `UNIQUE KEY unique_index(chain_id,block_height,tx_id,event_index)`

TopicTableUniqueKey describe topic table unique key

Variables

This section is empty.

Functions

func AddPrefix

func AddPrefix(origin string, prefixs []string) string

AddPrefix add prefix to origin string, use delimiter :

func CalcBlockHash

func CalcBlockHash(hashType string, b *commonPb.Block) ([]byte, error)

CalcBlockHash calculate block hash

func CalcDagHash

func CalcDagHash(hashType string, dag *commonPb.DAG) ([]byte, error)

CalcDagHash calculate DAG hash

func CalcPartialBlockHash

func CalcPartialBlockHash(hashType string, b *commonPb.Block) ([]byte, error)

CalcPartialBlockHash calculate partial block bytes hash contains Header without BlockHash, ConsensusArgs, Signature

func CalcRWSetHash

func CalcRWSetHash(hashType string, set *commonPb.TxRWSet) ([]byte, error)

CalcRWSetHash calculate read-write set hash return (nil, nil) if read-write set is nil

func CalcRWSetRoot

func CalcRWSetRoot(hashType string, txs []*commonPb.Transaction) ([]byte, error)

CalcRWSetRoot calculate txs' read-write set root hash, following the tx order in txs

func CalcResultBytes

func CalcResultBytes(result *commonPb.Result) ([]byte, error)

CalcResultBytes get bytearray of result

func CalcTxHash

func CalcTxHash(hashType string, t *commonPb.Transaction) ([]byte, error)

CalcTxHash calculate transaction hash, include tx.Payload, tx.signature, tx.Payload, tx.Result

func CalcTxHashWithVersion

func CalcTxHashWithVersion(hashType string, t *commonPb.Transaction, version int) ([]byte, error)

CalcTxHashWithVersion use version to judge if set tx gasUsed to zero when calc tx hash

func CalcTxRequestHash

func CalcTxRequestHash(hashType string, t *commonPb.Transaction) ([]byte, error)

CalcTxRequestHash calculate hash of transaction request

func CalcTxResultHash

func CalcTxResultHash(hashType string, result *commonPb.Result) ([]byte, error)

CalcTxResultHash calculate hash of transaction result

func CalcTxVerifyWorkers

func CalcTxVerifyWorkers(txCount int) int

CalcTxVerifyWorkers calculate work size of transaction verify

func CalcUnsignedTxBytes

func CalcUnsignedTxBytes(t *commonPb.Transaction) ([]byte, error)

CalcUnsignedTxBytes calculate unsigned transaction bytes [request payload bytes]

func CalcUnsignedTxRequestBytes

func CalcUnsignedTxRequestBytes(txReq *commonPb.TxRequest) ([]byte, error)

CalcUnsignedTxRequestBytes calculate unsigned transaction request bytes

func CanProposeEmptyBlock

func CanProposeEmptyBlock(consensusType consensusPb.ConsensusType) bool

CanProposeEmptyBlock can empty blocks be packed

func CertToAddrInt

func CertToAddrInt(cert *x509.Certificate, addrType config.AddrType) (*evmutils.Int, error)

CertToAddrInt create big.Int address by certificate

func CertToAddrStr

func CertToAddrStr(cert *x509.Certificate, addrType config.AddrType) (string, error)

CertToAddrStr create string address by certificate

func CheckChainIdFormat

func CheckChainIdFormat(chainId string) bool

CheckChainIdFormat check chain id format

func CheckContractNameFormat

func CheckContractNameFormat(name string) bool

CheckContractNameFormat check contract name format

func CheckRootCertificate

func CheckRootCertificate(certPEM string) (bool, error)

CheckRootCertificate check the root certificate

func CheckTxIDFormat

func CheckTxIDFormat(txID string) bool

CheckTxIDFormat check tx id format

func CreateGenesis

func CreateGenesis(cc *configPb.ChainConfig) (*commonPb.Block, []*commonPb.TxRWSet, error)

CreateGenesis create genesis block (with read-write set) based on chain config

func CurrentTimeMillisSeconds

func CurrentTimeMillisSeconds() int64

CurrentTimeMillisSeconds return current unix timestamp in milliseconds

func CurrentTimeSeconds

func CurrentTimeSeconds() int64

CurrentTimeSeconds return current unix timestamp in seconds

func DispatchTxVerifyTask

func DispatchTxVerifyTask(txs []*commonPb.Transaction) map[int][]*commonPb.Transaction

DispatchTxVerifyTask dispatch transaction verify task

func FilterBlockTxs

func FilterBlockTxs(reqSenderOrgId string, block *commonPb.Block) *commonPb.Block

FilterBlockTxs filter transactions with given sender org id

func FormatBlock

func FormatBlock(b *commonPb.Block) string

FormatBlock format block into string

func FormatRWSet

func FormatRWSet(set *commonPb.TxRWSet) string

FormatRWSet format rwset

func GZipCompressBytes

func GZipCompressBytes(data []byte) ([]byte, error)

GZipCompressBytes compress bytes with GZip(BestSpeed mode).

func GZipDeCompressBytes

func GZipDeCompressBytes(data []byte) ([]byte, error)

GZipDeCompressBytes decompress bytes with GZip.

func GenerateCreateTopicTableDdl

func GenerateCreateTopicTableDdl(t *commonPb.ContractEvent, chainId string) string

GenerateCreateTopicTableDdl generate create topic table

func GenerateInstallContractPayload

func GenerateInstallContractPayload(contractName, version string, runtimeType commonPb.RuntimeType, bytecode []byte,
	initParameters []*commonPb.KeyValuePair) (*commonPb.Payload, error)

GenerateInstallContractPayload generate install contract payload

func GenerateSaveBlockHeightWithTopicDdl

func GenerateSaveBlockHeightWithTopicDdl(t *commonPb.ContractEvent, chainId string, blockHeight uint64) string

GenerateSaveBlockHeightWithTopicDdl generate save block height with topic

func GenerateSaveContractEventDdl

func GenerateSaveContractEventDdl(t *commonPb.ContractEvent, chainId string, blockHeight uint64, eventIdx int) string

GenerateSaveContractEventDdl generate save contract event

func GenerateUpdateBlockHeightIndexDdl

func GenerateUpdateBlockHeightIndexDdl(blockHeight uint64) string

GenerateUpdateBlockHeightIndexDdl generate update block height index

func GetCertHash

func GetCertHash(_ string, userCrtPEM []byte, hashType string) ([]byte, error)

GetCertHash get certificate hash

func GetCertificateId

func GetCertificateId(certPEM []byte, hashType string) ([]byte, error)

GetCertificateId get certificate id

func GetCertificateIdFromDER

func GetCertificateIdFromDER(certDER []byte, hashType string) ([]byte, error)

GetCertificateIdFromDER get certificate id from DER

func GetCertificateIdHex

func GetCertificateIdHex(certPEM []byte, hashType string) (string, error)

GetCertificateIdHex on input a certificate in PEM format, a hash algorithm(should be the one in chain configuration), output the identity of the certificate in the form of a string (under hexadecimal encoding)

func GetConsensusArgsFromBlock

func GetConsensusArgsFromBlock(block *commonPb.Block) (*consensusPb.BlockHeaderConsensusArgs, error)

GetConsensusArgsFromBlock get args from block

func GetContractByName

func GetContractByName(readObject func(contractName string, key []byte) ([]byte, error), name string) (
	*commonPb.Contract, error)

GetContractByName get contract by name

func GetContractByteCodeDbKey

func GetContractByteCodeDbKey(contractName string) []byte

GetContractByteCodeDbKey get contract byte code db key

func GetContractBytecode

func GetContractBytecode(readObject func(contractName string, key []byte) ([]byte, error), name string) (
	[]byte, error)

GetContractBytecode get contract bytecode

func GetContractDbKey

func GetContractDbKey(contractName string) []byte

GetContractDbKey get contract db key

func GetIntAddrFromParticipant

func GetIntAddrFromParticipant(participant protocol.Participant, addrType config.AddrType) (*evmutils.Int, error)

GetIntAddrFromParticipant calculate Int address from protocol participant

func GetIntAddrFromPbParticipant

func GetIntAddrFromPbParticipant(pbParticipant *acPb.Participant, addrType config.AddrType, hashType crypto.HashType) (*evmutils.Int,
	error)

GetIntAddrFromPbParticipant calculate Int address from pb participant

func GetNodeUidFromAddr

func GetNodeUidFromAddr(addr string) (string, error)

GetNodeUidFromAddr get protocol.NodeUId from node's address

func GetParticipantPubKeySA

func GetParticipantPubKeySA(participant *acPb.Participant, getter ParticipantGetter) ([]byte, uint32)

GetParticipantPubKeySA get participant public key

func GetRandTxId

func GetRandTxId() string

GetRandTxId return hex string format random transaction id with length = 64

func GetRoleFromTx

GetRoleFromTx get role from tx

func GetSqlStatementCount

func GetSqlStatementCount(sql string) int

GetSqlStatementCount 判断一个sql字符串是由多少条独立的SQL语句组成

func GetSqlTableName

func GetSqlTableName(sql string) []string

GetSqlTableName 获得SQL中使用到的表名,如果带有dbName.tableName,那么返回完整的dbName.tableName

func GetStrAddrFromParticipant

func GetStrAddrFromParticipant(participant protocol.Participant, addrType config.AddrType) (string, error)

GetStrAddrFromParticipant calculate string address from protocol participant

func GetStrAddrFromPbParticipant

func GetStrAddrFromPbParticipant(pbParticipant *acPb.Participant, addrType config.AddrType, hashType crypto.HashType) (string, error)

GetStrAddrFromPbParticipant calculate string address from pb Participant

func GetTimestampTxId

func GetTimestampTxId() string

GetTimestampTxId return hex string format random transaction id with length = 64 GetTimestampTxId by current time, see: GetTimestampTxIdByNano eg: 687dca1d9c4fdf1652fdfc072182654f53622c496aa94c05b47d34263cd99ec9

func GetTimestampTxIdByNano

func GetTimestampTxIdByNano(nano int64) string

GetTimestampTxIdByNano nanosecond TODO TxId is generated linearly according to Nano

func GetTxIdWithSeed

func GetTxIdWithSeed(seed int64) string

GetTxIdWithSeed return tx-id with seed

func GetTxIds

func GetTxIds(txs []*commonPb.Transaction) []string

GetTxIds get tx ids

func IsAllBlank

func IsAllBlank(args ...interface{}) bool

IsAllBlank args type only string/[]byte

func IsAnyBlank

func IsAnyBlank(args ...interface{}) bool

IsAnyBlank args type only string/[]byte

func IsCertManagementTx

func IsCertManagementTx(tx *commonPb.Transaction) bool

IsCertManagementTx the transaction is a cert management transaction or not

func IsConfBlock

func IsConfBlock(block *commonPb.Block) bool

IsConfBlock is it a configuration block

func IsConfigTx

func IsConfigTx(tx *commonPb.Transaction) bool

IsConfigTx the transaction is a config transaction or not separate blocks are required

func IsContractManagementTx

func IsContractManagementTx(tx *commonPb.Transaction) bool

IsContractManagementTx the transaction is a contract management transaction or not

func IsContractMgmtBlock

func IsContractMgmtBlock(b *commonPb.Block) bool

IsContractMgmtBlock check is contract management block

func IsContractMgmtTx

func IsContractMgmtTx(tx *commonPb.Transaction) bool

IsContractMgmtTx 是否是合约安装、升级的交易

func IsDagEqual

func IsDagEqual(dag1 *commonPb.DAG, dag2 *commonPb.DAG) (bool, error)

IsDagEqual compare two DAG by bytes

func IsEmptyBlock

func IsEmptyBlock(block *commonPb.Block) error

IsEmptyBlock is it a empty block

func IsManageContractAsConfigTx

func IsManageContractAsConfigTx(tx *commonPb.Transaction, enableSqlDB bool) bool

IsManageContractAsConfigTx Whether the Manager Contract is considered a configuration transaction

func IsManagementTx

func IsManagementTx(tx *commonPb.Transaction) bool

IsManagementTx the transaction is a management transaction or not separate blocks are required

func IsMultiSignManagementTx

func IsMultiSignManagementTx(tx *commonPb.Transaction) bool

IsMultiSignManagementTx the transaction is a multi sign management transaction or not

func IsPubKeyManagementTx

func IsPubKeyManagementTx(tx *commonPb.Transaction) bool

IsPubKeyManagementTx the transaction is a pub key management transaction or not

func IsSystemContract added in v1.0.1

func IsSystemContract(contractName string) bool

IsSystemContract return is system contract name

func IsSystemTx added in v1.0.1

func IsSystemTx(tx *commonPb.Transaction) (isSystem bool, contractName string)

IsSystemTx check tx is a system contract invoke tx

func IsValidConfigTx

func IsValidConfigTx(tx *commonPb.Transaction) bool

IsValidConfigTx the transaction is a valid config transaction or not

func NameToAddrInt

func NameToAddrInt(name string, addrType config.AddrType, blockVersion uint32) (*evmutils.Int, error)

NameToAddrInt create big.Int address by name

func NameToAddrStr

func NameToAddrStr(name string, addrType config.AddrType, blockVersion uint32) (string, error)

NameToAddrStr create string address by name

func ParseCert

func ParseCert(crtPEM []byte) (*bcx509.Certificate, error)

ParseCert convert bytearray to certificate

func ParsePkFromPbParticipant

func ParsePkFromPbParticipant(participant *acPb.Participant) (crypto.PublicKey, error)

ParsePkFromPbParticipant parse public key from participant

func PkToAddrInt

func PkToAddrInt(pk crypto.PublicKey, addrType config.AddrType, hashType crypto.HashType) (*evmutils.Int, error)

PkToAddrInt create big.Int address by pk

func PkToAddrStr

func PkToAddrStr(pk crypto.PublicKey, addrType config.AddrType, hashType crypto.HashType) (string, error)

PkToAddrStr crete string address by pk

func RearrangeRWSet

func RearrangeRWSet(block *commonPb.Block, rwSetMap map[string]*commonPb.TxRWSet) []*commonPb.TxRWSet

RearrangeRWSet rearrange rwSetMap into slice by block.Txs order

func SignBlock

func SignBlock(hashType string, singer protocol.SigningParticipant, b *commonPb.Block) ([]byte, []byte, error)

SignBlock sign the block (in fact, here we sign block hash...) with signing participant return hash bytes and signature bytes

func ToCamelCase

func ToCamelCase(field string) string

ToCamelCase as: abc_def -> AbcDef

func UnmarshalJsonStrKV2KVPairs

func UnmarshalJsonStrKV2KVPairs(jsonStr string) ([]*commonpb.KeyValuePair, error)

UnmarshalJsonStrKV2KVPairs 传入一个json字符串,该字符串key value都是string,转换为系统需要的KeyValuePair列表

func UpdateField

func UpdateField(params map[string][]byte, key string, config interface{}) (bool, error)

UpdateField set the key in data by params[key] to struct public field return if the field has been changed such as key->field: block_height -> BlockHeight

func VerifyBlockSig

func VerifyBlockSig(hashType string, b *commonPb.Block, ac protocol.AccessControlProvider) (bool, error)

VerifyBlockSig verify block proposer and signature

func VerifyCertIssue

func VerifyCertIssue(caCerts [][]byte, intermediateCerts [][]byte, cert []byte) error

VerifyCertIssue verify that the certificate is issued by the root/intermediate certificate caCerts caCert list, caCert means cert []byte(string)

func VerifyTxWithoutPayload

func VerifyTxWithoutPayload(tx *commonPb.Transaction, chainId string, ac protocol.AccessControlProvider,
	options ...string) error

VerifyTxWithoutPayload verify a transaction with access control provider. The payload of the transaction will not be verified.

Types

type BigInteger

type BigInteger struct {
	Value *big.Int
}

BigInteger wrapper for big.Int

func NewBigInteger

func NewBigInteger(value string) *BigInteger

NewBigInteger create a BigInteger

func NewZeroBigInteger

func NewZeroBigInteger() *BigInteger

NewZeroBigInteger create a BigInteger of zero

func Sub

func Sub(x, y *BigInteger) *BigInteger

Sub subtracts two big integer

func Sum

func Sum(x, y *BigInteger) *BigInteger

Sum adds two big integer

func (*BigInteger) Add

func (x *BigInteger) Add(y *BigInteger)

Add adds y to x

func (*BigInteger) Cmp

func (x *BigInteger) Cmp(y *BigInteger) int

Cmp compares x and y and returns:

-1 if x <  y
 0 if x == y
+1 if x >  y

func (*BigInteger) String

func (x *BigInteger) String() string

String gets string

func (*BigInteger) Sub

func (x *BigInteger) Sub(y *BigInteger)

Sub subs y from x

type BlockFingerPrint

type BlockFingerPrint string

BlockFingerPrint alias for string

func CalcBlockFingerPrint

func CalcBlockFingerPrint(block *commonPb.Block) BlockFingerPrint

CalcBlockFingerPrint since the block has not yet formed, snapshot uses fingerprint as the possible unique value of the block

func CalcBlockFingerPrintWithoutTx

func CalcBlockFingerPrintWithoutTx(block *commonPb.Block) BlockFingerPrint

CalcBlockFingerPrintWithoutTx 排除掉Tx的因素,计算Block的指纹,这样计算出来不管Block如何包含Tx,其指纹不变

func CalcFingerPrint

func CalcFingerPrint(chainId string, height uint64, timestamp int64,
	proposer, preHash, txRoot, dagHash, rwSetRoot []byte) BlockFingerPrint

CalcFingerPrint calculate finger print

type ParticipantGetter

type ParticipantGetter interface {
	// GetFullParticipantInfo 根据CERT_HASH获得完整的Cert,根据DID获得DID Document
	GetFullParticipantInfo(participantId []byte, mtype acPb.ParticipantType) ([]byte, error)
}

ParticipantGetter participant getter interface

Jump to

Keyboard shortcuts

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