utils

package module
v0.0.0-...-7f0e56f Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2022 License: Apache-2.0 Imports: 41 Imported by: 1

README

utils

介绍

perseus 链工具类代码库

软件架构

软件架构说明

安装教程
  1. xxxx
  2. xxxx
  3. xxxx
使用说明
  1. xxxx
  2. xxxx
  3. xxxx
参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

Documentation

Index

Constants

View Source
const (
	PrefixContractInfo     = "Contract:"
	PrefixContractByteCode = "ContractByteCode:"
)
View Source
const (
	DPosOrgId = "dpos_org_id"
)
View Source
const DecBase = 10
View Source
const (
	KLV_LENGTH_SIZE = 4
)
View Source
const TopicTableColumnDdl = `` /* 494-byte string literal not displayed */
View Source
const TopicTableIndex = `` /* 281-byte string literal not displayed */
View Source
const TopicTableUniqueKey = `UNIQUE KEY unique_index(chain_id,block_height,tx_id,event_index)`

Variables

View Source
var (
	OidKeyBag = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 12, 10, 1, 1}
)

Functions

func BinaryToUint32

func BinaryToUint32(in []byte) (uint32, error)

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 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 CheckChainIdFormat

func CheckChainIdFormat(chainId string) bool

func CheckContractNameFormat

func CheckContractNameFormat(name string) bool

func CheckEvmAddressFormat

func CheckEvmAddressFormat(addr string) bool

func CheckRootCertificate

func CheckRootCertificate(certPEM string) (bool, error)

CheckRootCertificate check the root certificate

func CheckTxIDFormat

func CheckTxIDFormat(txID string) bool

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

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

func GenerateInstallContractPayload

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

func GenerateSaveBlockHeightWithTopicDdl

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

func GenerateSaveContractEventDdl

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

func GenerateUpdateBlockHeightIndexDdl

func GenerateUpdateBlockHeightIndexDdl(blockHeight uint64) string

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)

func GetContractByteCodeDbKey

func GetContractByteCodeDbKey(contractName string) []byte

func GetContractBytecode

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

func GetContractDbKey

func GetContractDbKey(contractName string) []byte

func GetMemberPubKeySA

func GetMemberPubKeySA(member *accesscontrol.Member, getter MemberGetter) ([]byte, uint32)

func GetNodeUidFromAddr

func GetNodeUidFromAddr(addr string) (string, error)

GetNodeUidFromAddr get protocol.NodeUId from node's address

func GetRandTxId

func GetRandTxId() string

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

func GetSqlStatementCount

func GetSqlStatementCount(sql string) int

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

func GetSqlTableName

func GetSqlTableName(sql string) []string

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

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

func HasDPosTxWritesInHeader

func HasDPosTxWritesInHeader(block *commonPb.Block, chainConf protocol.ChainConf) bool

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 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 IsContractMgmtBlock

func IsContractMgmtBlock(b *commonPb.Block) bool

func IsContractMgmtTx

func IsContractMgmtTx(tx *commonPb.Transaction) bool

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

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

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

func IsNativeContract

func IsNativeContract(contractName string) bool

IsNativeContract return is native contract name

func IsNativeTx

func IsNativeTx(tx *commonPb.Transaction) (isNative bool, contractName string)

IsNativeTx check tx is a native contract invoke tx

func IsValidConfigTx

func IsValidConfigTx(tx *commonPb.Transaction) bool

IsValidConfigTx the transaction is a valid config transaction or not

func ParseCert

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

ParseCert convert bytearray to certificate

func SignBlock

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

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

func ToCamelCase

func ToCamelCase(field string) string

ToCamelCase as: abc_def -> AbcDef

func Uint32ToBinary

func Uint32ToBinary(in uint32) []byte

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)

func VerifyCertIssue

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

VerifyRootCertIssue 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) 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

func NewZeroBigInteger

func NewZeroBigInteger() *BigInteger

func Sub

func Sub(x, y *BigInteger) *BigInteger

func Sum

func Sum(x, y *BigInteger) *BigInteger

func (*BigInteger) Add

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

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

func (*BigInteger) Sub

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

type BlockFingerPrint

type BlockFingerPrint 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 ERC20Config

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

ERC20Config for DPoS

type MemberGetter

type MemberGetter interface {
	//GetFullMemberInfo根据CERT_HASH获得完整的Cert,根据DID获得DID Document
	GetFullMemberInfo(memberId []byte, mtype accesscontrol.MemberType) ([]byte, error)
}

type StakeConfig

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

type TEEProof

type TEEProof struct {
	VerificationKey    bccrypto.PublicKey
	VerificationKeyPEM []byte
	EncryptionKey      bccrypto.EncryptKey
	EncryptionKeyPEM   []byte
	Certificate        *bcx509.Certificate
	CertificateDER     []byte
	Report             []byte
	Challenge          []byte
	Signature          []byte
}

func AttestationVerify

func AttestationVerify(proof []byte, certOpts bcx509.VerifyOptions, reportFromChain []byte) (bool, *TEEProof, error)

func AttestationVerifyComponents

func AttestationVerifyComponents(challenge, signature, report []byte,
	certificate *bcx509.Certificate, verificationKey bccrypto.PublicKey,
	encryptionKey bccrypto.EncryptKey, certOpts bcx509.VerifyOptions) (bool, *TEEProof, error)

func GrapheneAttestationVerify

func GrapheneAttestationVerify(proof *tee.RemoteAttestationResponse, certOpts bcx509.VerifyOptions,
	reportFromChain []byte) (bool, *TEEProof, error)

Jump to

Keyboard shortcuts

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