Documentation
¶
Overview ¶
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
* Copyright 2018 The openwallet Authors * This file is part of the openwallet library. * * The openwallet library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The openwallet library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details.
Index ¶
- Constants
- Variables
- func ConverKStringToKtoDecimal(amount string) (decimal.Decimal, error)
- func ConverKtoDecimalToK(amount decimal.Decimal) (*big.Int, error)
- func ConvertAmountToFloatDecimal(amount string, decimals int) (decimal.Decimal, error)
- func ConvertFloatStringToBigInt(amount string, decimals int) (*big.Int, error)
- func ConvertKTOStringToK(amount string) (*big.Int, error)
- func ConvertToBigInt(value string, base int) (*big.Int, error)
- func ConvertToUint64(value string, base int) (uint64, error)
- func OpenDB(dbPath string, dbName string) (*storm.DB, error)
- func VerifyRawTransaction(rawTx *openwallet.RawTransaction) error
- type AddrBalance
- type AddrBalanceInf
- type AddrVec
- type Address
- type AddressDecoder
- func (decoder *AddressDecoder) PrivateKeyToWIF(priv []byte, isTestnet bool) (string, error)
- func (decoder *AddressDecoder) PublicKeyToAddress(pub []byte, isTestnet bool) (string, error)
- func (decoder *AddressDecoder) RedeemScriptToAddress(pubs [][]byte, required uint64, isTestnet bool) (string, error)
- func (decoder *AddressDecoder) WIFToPrivateKey(wif string, isTestnet bool) ([]byte, error)
- type AddressTxStatistic
- type BlockHeader
- type BlockTransaction
- type Client
- type ERC20Token
- type EthTxExtPara
- type ExtractResult
- type KTOBLockScanner
- func (this *KTOBLockScanner) BatchExtractTransaction(txs []BlockTransaction) error
- func (bs *KTOBLockScanner) DeleteUnscanRecord(height uint64) error
- func (bs *KTOBLockScanner) DeleteUnscanRecordByID(id string) error
- func (this *KTOBLockScanner) ExtractTransactionData(txid string, scanTargetFunc openwallet.BlockScanTargetFunc) (map[string][]*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) GetBalanceByAddress(address ...string) ([]*openwallet.Balance, error)
- func (this *KTOBLockScanner) GetCurrentBlockHeader() (*openwallet.BlockHeader, error)
- func (this *KTOBLockScanner) GetGlobalMaxBlockHeight() uint64
- func (bs *KTOBLockScanner) GetLocalBlock(height uint64) (*KtoBlock, error)
- func (bs *KTOBLockScanner) GetLocalBlockHead() (uint64, string, error)
- func (this *KTOBLockScanner) GetLocalNewBlock() (uint64, string, error)
- func (this *KTOBLockScanner) GetScannedBlockHeader() (*openwallet.BlockHeader, error)
- func (this *KTOBLockScanner) GetScannedBlockHeight() uint64
- func (bs *KTOBLockScanner) GetUnscanRecords() ([]*openwallet.UnscanRecord, error)
- func (this *KTOBLockScanner) MakeFromExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) MakeSimpleToExtractData(tx *BlockTransaction) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) MakeSimpleTxFromExtractData(tx *BlockTransaction) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) MakeToExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) MakeTokenToExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) MakeTokenTxFromExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
- func (this *KTOBLockScanner) RescanFailedTransactions() error
- func (bs *KTOBLockScanner) SaveLocalBlock(blockHeader *KtoBlock) error
- func (bs *KTOBLockScanner) SaveLocalBlockHead(blockHeight uint64, blockHash string) error
- func (bs *KTOBLockScanner) SaveUnscanRecord(record *openwallet.UnscanRecord) error
- func (this *KTOBLockScanner) SaveUnscannedTransaction(tx *BlockTransaction, reason string) error
- func (this *KTOBLockScanner) ScanBlock(height uint64) error
- func (this *KTOBLockScanner) ScanBlockTask()
- func (this *KTOBLockScanner) SetRescanBlockHeight(height uint64) error
- func (bs *KTOBLockScanner) SupportBlockchainDAI() bool
- func (this *KTOBLockScanner) TransactionScanning(tx *BlockTransaction) (*ExtractResult, error)
- type KtoBlock
- type KtoEvent
- type KtoTransactionDecoder
- func (this *KtoTransactionDecoder) CreateRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
- func (this *KtoTransactionDecoder) CreateSimpleRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction, ...) error
- func (this *KtoTransactionDecoder) CreateSimpleSummaryRawTransaction(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransactionWithError, error)
- func (this *KtoTransactionDecoder) CreateSummaryRawTransaction(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransaction, error)
- func (this *KtoTransactionDecoder) CreateSummaryRawTransactionWithError(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransactionWithError, error)
- func (this *KtoTransactionDecoder) GetRawTransactionFeeRate() (feeRate string, unit string, err error)
- func (this *KtoTransactionDecoder) GetTransactionCount(address string) (uint64, error)
- func (this *KtoTransactionDecoder) GetTransactionCount2(address string) (*AddressTxStatistic, uint64, error)
- func (this *KtoTransactionDecoder) RemoveOutdatedAddrStatic()
- func (this *KtoTransactionDecoder) RunClearAddrStatic()
- func (this *KtoTransactionDecoder) SetTransactionCount(address string, transactionCount uint64) error
- func (this *KtoTransactionDecoder) SignRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
- func (this *KtoTransactionDecoder) SubmitRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) (*openwallet.Transaction, error)
- func (this *KtoTransactionDecoder) SubmitSimpleRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) (*openwallet.Transaction, error)
- func (this *KtoTransactionDecoder) VerifyRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
- type KtoTransactionReceipt
- type Response
- type SaveResult
- type TokenAddrVec
- type TransferEvent
- type TxpoolContent
- type Wallet
- func (this *Wallet) ClearAllTransactions(dbPath string)
- func (w *Wallet) DBFile(dbPath string) string
- func (this *Wallet) DeleteTransactionByHeight(dbPath string, height uint64) error
- func (this *Wallet) DumpWalletDB(dbPath string)
- func (w *Wallet) FileName() string
- func (this *Wallet) HDKey2(password string) (*hdkeystore.HDKey, error)
- func (w *Wallet) OpenDB(dbPath string) (*storm.DB, error)
- func (w *Wallet) OpenDbByPath(path string) (*storm.DB, error)
- func (this *Wallet) RestoreFromDb(dbPath string) error
- func (this *Wallet) SaveAddress(dbpath string, addr *Address) error
- func (this *Wallet) SaveTransactions(dbPath string, txs []BlockTransaction) error
- type WalletConfig
- type WalletManager
- func (this *WalletManager) AddWalletInSummary(wid string, wallet *Wallet)
- func (this *WalletManager) BackupWallet2(newBackupDir string, wallet *Wallet, password string) (string, error)
- func (this *WalletManager) BackupWalletToDefaultPath(wallet *Wallet, password string) (string, error)
- func (this *WalletManager) CreateWallet(name string, password string) (*Wallet, string, error)
- func (this *WalletManager) CurveType() uint32
- func (this *WalletManager) Decimal() int32
- func (this *WalletManager) FullName() string
- func (this *WalletManager) GetAddressDecode() openwallet.AddressDecoder
- func (this *WalletManager) GetAssetsLogger() *log.OWLogger
- func (this *WalletManager) GetBlockScanner() openwallet.BlockScanner
- func (this *WalletManager) GetConfig() WalletConfig
- func (this *WalletManager) GetERC20TokenTransactionFeeEstimated(from string, to string, data string) (*txFeeInfo, error)
- func (this *WalletManager) GetNonceForAddress(address string) (uint64, error)
- func (this *WalletManager) GetNonceForAddress2(address string) (uint64, error)
- func (this *WalletManager) GetSimpleTransactionFeeEstimated(from string, to string, amount *big.Int) (*txFeeInfo, error)
- func (this *WalletManager) GetSmartContractDecoder() openwallet.SmartContractDecoder
- func (this *WalletManager) GetTransactionDecoder() openwallet.TransactionDecoder
- func (this *WalletManager) GetTransactionFeeEstimated(from string, to string, value *big.Int, data string) (*txFeeInfo, error)
- func (this *WalletManager) ImportWatchOnlyAddress(address ...*openwallet.Address) error
- func (this *WalletManager) InitAssetsConfig() (config.Configer, error)
- func (this *WalletManager) InitConfig()
- func (this *WalletManager) InitConfigFlow() error
- func (this *WalletManager) KtoSendRawTransaction(from, to string, amount, nonce uint64, time int64, hash, signature []byte) (string, error)
- func (this *WalletManager) LoadAssetsConfig(c config.Configer) error
- func (this *WalletManager) PrintConfig() error
- func (this *WalletManager) RecoverUnscannedTransactions(unscannedTxs []*openwallet.UnscanRecord) ([]BlockTransaction, error)
- func (this *WalletManager) SendTransactionToAddr(param map[string]interface{}) (string, error)
- func (wm *WalletManager) ShowConfig() error
- func (this *WalletManager) Symbol() string
- func (this *WalletManager) UnlockWallet(wallet *Wallet, password string) error
Constants ¶
const ( KTOPrefix = "Kto" KTOLen = 47 )
const ( Symbol = "NKTO" MasterKey = "KeyToken seed" TIME_POSTFIX = "20060102150405" CurveType = owcrypt.ECC_CURVE_ED25519 )
const ( ETH_GET_TOKEN_BALANCE_METHOD = "0x70a08231" ETH_TRANSFER_TOKEN_BALANCE_METHOD = "0xa9059cbb" ETH_TRANSFER_EVENT_ID = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" )
const ( SOLIDITY_TYPE_ADDRESS = "address" SOLIDITY_TYPE_UINT256 = "uint256" SOLIDITY_TYPE_UINT160 = "uint160" )
const ( TRANS_AMOUNT_UNIT_LIST = ` 1: wei 2: Kwei 3: Mwei 4: GWei 5: microether 6: milliether 7: ether ` TRANS_AMOUNT_UNIT_WEI = 1 TRANS_AMOUNT_UNIT_K_WEI = 2 TRANS_AMOUNT_UNIT_M_WEI = 3 TRANS_AMOUNT_UNIT_G_WEI = 4 TRANS_AMOUNT_UNIT_MICRO_ETHER = 5 TRANS_AMOUNT_UNIT_MILLIE_ETHER = 6 TRNAS_AMOUNT_UNIT_ETHER = 7 )
const ( WALLET_NOT_EXIST_ERR = "The wallet whose name is given not exist!" BACKUP_FILE_TYPE_ADDRESS = 0 BACKUP_FILE_TYPE_WALLET_KEY = 1 BACKUP_FILE_TYPE_WALLET_DB = 2 )
const (
ADRESS_STATIS_OVERDATED_TIME = 30
)
const (
BLOCK_CHAIN_BUCKET = "blockchain"
)
const (
Decimals = 11
)
1KTO = 100000000000
const ( //BLOCK_CHAIN_BUCKET = "blockchain" //区块链数据集合 //periodOfTask = 5 * time.Second //定时任务执行隔间 MAX_EXTRACTING_SIZE = 20 //并发的扫描线程数 )
Variables ¶
var (
KTO_mainnetAddressP2PKH = addressEncoder.AddressType{"base58", addressEncoder.BTCAlphabet, "doubleSHA256", "h160", 20, []byte{0x3f}, nil}
)
Functions ¶
func ConverKStringToKtoDecimal ¶
将最小单位的余额转换为 KTO 单位 接收 string 参数
func ConverKtoDecimalToK ¶
将 KTO 转换为最小单位的值 接收 decimal 参数
func ConvertAmountToFloatDecimal ¶
最小单位余额转换为 KTO 单位
func ConvertFloatStringToBigInt ¶
将 KTO 转换为最小单位
func VerifyRawTransaction ¶
func VerifyRawTransaction(rawTx *openwallet.RawTransaction) error
Types ¶
type AddrBalance ¶
func (*AddrBalance) GetAddress ¶
func (this *AddrBalance) GetAddress() string
func (*AddrBalance) SetTokenBalance ¶
func (this *AddrBalance) SetTokenBalance(b *big.Int)
func (*AddrBalance) ValidTokenBalance ¶
func (this *AddrBalance) ValidTokenBalance() bool
type AddrBalanceInf ¶
type Address ¶
type Address struct {
Address string `json:"address" storm:"id"`
Account string `json:"account" storm:"index"`
HDPath string `json:"hdpath"`
Index int
PublicKey string
TxCount uint64
CreatedAt time.Time
// contains filtered or unexported fields
}
func (*Address) CalcHexPrivKey ¶
func (this *Address) CalcHexPrivKey(masterKey *hdkeystore.HDKey) (string, error)
func (*Address) CalcPrivKey ¶
func (this *Address) CalcPrivKey(masterKey *hdkeystore.HDKey) ([]byte, error)
type AddressDecoder ¶
type AddressDecoder struct{}
AddressDecoder 地址解析器
func (*AddressDecoder) PrivateKeyToWIF ¶
func (decoder *AddressDecoder) PrivateKeyToWIF(priv []byte, isTestnet bool) (string, error)
PrivateKeyToWIF 私钥转WIF
func (*AddressDecoder) PublicKeyToAddress ¶
func (decoder *AddressDecoder) PublicKeyToAddress(pub []byte, isTestnet bool) (string, error)
PublicKeyToAddress 公钥转地址
func (*AddressDecoder) RedeemScriptToAddress ¶
func (decoder *AddressDecoder) RedeemScriptToAddress(pubs [][]byte, required uint64, isTestnet bool) (string, error)
RedeemScriptToAddress 多重签名赎回脚本转地址
func (*AddressDecoder) WIFToPrivateKey ¶
func (decoder *AddressDecoder) WIFToPrivateKey(wif string, isTestnet bool) ([]byte, error)
WIFToPrivateKey WIF转私钥
type AddressTxStatistic ¶
type AddressTxStatistic struct {
Address string
TransactionCount *uint64
LastModifiedTime *time.Time
Valid *int //如果valid指针指向的整形为0, 说明该地址已经被清理线程清理
AddressLocker *sync.Mutex
}
func (*AddressTxStatistic) UpdateTime ¶
func (this *AddressTxStatistic) UpdateTime()
type BlockHeader ¶
type BlockHeader struct {
BlockNumber string `json:"number" storm:"id"`
BlockHash string `json:"hash"`
GasLimit string `json:"gasLimit"`
GasUsed string `json:"gasUsed"`
Miner string `json:"miner"`
Difficulty string `json:"difficulty"`
TotalDifficulty string `json:"totalDifficulty"`
PreviousHash string `json:"parentHash"`
BlockHeight uint64 //RecoverBlockHeader的时候进行初始化
}
func NewBlockHeader ¶
func NewBlockHeader(msg *message.RespBlock) *BlockHeader
type BlockTransaction ¶
type BlockTransaction struct {
Hash string `json:"hash" storm:"id"`
BlockNumber string `json:"blockNumber" storm:"index"`
BlockHash string `json:"blockHash" storm:"index"`
From string `json:"from"`
To string `json:"to"`
Gas string `json:"gas"`
GasPrice string `json:"gasPrice"`
Value string `json:"value"`
Data string `json:"input"`
TransactionIndex string `json:"transactionIndex"`
Timestamp string `json:"timestamp"`
BlockHeight uint64 //transaction scanning 的时候对其进行赋值
FilterFunc openwallet.BlockScanAddressFunc
Status uint64
}
func ParseToBlockTransaction ¶
func ParseToBlockTransaction(msg *message.RespTxByHash) *BlockTransaction
func ParseToBlockTransactions ¶
func ParseToBlockTransactions(msg *message.RespBlock) []BlockTransaction
func (*BlockTransaction) GetAmountEthString ¶
func (this *BlockTransaction) GetAmountEthString() (string, error)
func (*BlockTransaction) GetTxFeeEthString ¶
func (this *BlockTransaction) GetTxFeeEthString() (string, error)
type Client ¶
type Client struct {
Debug bool
GreeterClient message.GreeterClient
}
func (*Client) GetAddrBalance ¶
获取地址余额
func (*Client) GetMaxBlockNumber ¶
获取链上最大区块号
func (*Client) GetTxByHash ¶
func (this *Client) GetTxByHash(txid string) (*BlockTransaction, error)
以txid获取交易详情
type ERC20Token ¶
type EthTxExtPara ¶
func NewEthTxExtPara ¶
func NewEthTxExtPara(j gjson.Result) *EthTxExtPara
type ExtractResult ¶
type ExtractResult struct {
//Recharges []*openwallet.Recharge
TxID string
BlockHeight uint64
Success bool
// contains filtered or unexported fields
}
ExtractResult 扫描完成的提取结果
type KTOBLockScanner ¶
type KTOBLockScanner struct {
*openwallet.BlockScannerBase
CurrentBlockHeight uint64 //当前区块高度
IsScanMemPool bool //是否扫描交易池
RescanLastBlockCount uint64 //重扫上N个区块数量
// contains filtered or unexported fields
}
func NewKTOBlockScanner ¶ added in v1.0.2
func NewKTOBlockScanner(wm *WalletManager) *KTOBLockScanner
NewBTCBlockScanner 创建区块链扫描器
func (*KTOBLockScanner) BatchExtractTransaction ¶
func (this *KTOBLockScanner) BatchExtractTransaction(txs []BlockTransaction) error
BatchExtractTransaction 批量提取交易单 bitcoin 1M的区块链可以容纳3000笔交易,批量多线程处理,速度更快
func (*KTOBLockScanner) DeleteUnscanRecord ¶
func (bs *KTOBLockScanner) DeleteUnscanRecord(height uint64) error
DeleteUnscanRecord 删除指定高度的未扫记录
func (*KTOBLockScanner) DeleteUnscanRecordByID ¶
func (bs *KTOBLockScanner) DeleteUnscanRecordByID(id string) error
DeleteUnscanRecordByID 删除指定的未扫记录
func (*KTOBLockScanner) ExtractTransactionData ¶
func (this *KTOBLockScanner) ExtractTransactionData(txid string, scanTargetFunc openwallet.BlockScanTargetFunc) (map[string][]*openwallet.TxExtractData, error)
ExtractTransactionData 扫描一笔交易
func (*KTOBLockScanner) GetBalanceByAddress ¶
func (this *KTOBLockScanner) GetBalanceByAddress(address ...string) ([]*openwallet.Balance, error)
func (*KTOBLockScanner) GetCurrentBlockHeader ¶
func (this *KTOBLockScanner) GetCurrentBlockHeader() (*openwallet.BlockHeader, error)
GetCurrentBlockHeader 获取当前区块高度
func (*KTOBLockScanner) GetGlobalMaxBlockHeight ¶
func (this *KTOBLockScanner) GetGlobalMaxBlockHeight() uint64
func (*KTOBLockScanner) GetLocalBlock ¶
func (bs *KTOBLockScanner) GetLocalBlock(height uint64) (*KtoBlock, error)
GetLocalBlock 获取本地区块数据
func (*KTOBLockScanner) GetLocalBlockHead ¶
func (bs *KTOBLockScanner) GetLocalBlockHead() (uint64, string, error)
GetLocalBlockHead 获取本地记录的区块高度和hash
func (*KTOBLockScanner) GetLocalNewBlock ¶
func (this *KTOBLockScanner) GetLocalNewBlock() (uint64, string, error)
GetLocalNewBlock 获取本地记录的区块高度和hash
func (*KTOBLockScanner) GetScannedBlockHeader ¶
func (this *KTOBLockScanner) GetScannedBlockHeader() (*openwallet.BlockHeader, error)
GetScannedBlockHeader 获取当前已扫区块高度
func (*KTOBLockScanner) GetScannedBlockHeight ¶
func (this *KTOBLockScanner) GetScannedBlockHeight() uint64
GetScannedBlockHeight 获取已扫区块高度
func (*KTOBLockScanner) GetUnscanRecords ¶
func (bs *KTOBLockScanner) GetUnscanRecords() ([]*openwallet.UnscanRecord, error)
func (*KTOBLockScanner) MakeFromExtractData ¶
func (this *KTOBLockScanner) MakeFromExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) MakeSimpleToExtractData ¶
func (this *KTOBLockScanner) MakeSimpleToExtractData(tx *BlockTransaction) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) MakeSimpleTxFromExtractData ¶
func (this *KTOBLockScanner) MakeSimpleTxFromExtractData(tx *BlockTransaction) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) MakeToExtractData ¶
func (this *KTOBLockScanner) MakeToExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) MakeTokenToExtractData ¶
func (this *KTOBLockScanner) MakeTokenToExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) MakeTokenTxFromExtractData ¶
func (this *KTOBLockScanner) MakeTokenTxFromExtractData(tx *BlockTransaction, tokenEvent *TransferEvent) (string, []*openwallet.TxExtractData, error)
func (*KTOBLockScanner) RescanFailedTransactions ¶
func (this *KTOBLockScanner) RescanFailedTransactions() error
func (*KTOBLockScanner) SaveLocalBlock ¶
func (bs *KTOBLockScanner) SaveLocalBlock(blockHeader *KtoBlock) error
SaveLocalBlock 记录本地新区块
func (*KTOBLockScanner) SaveLocalBlockHead ¶
func (bs *KTOBLockScanner) SaveLocalBlockHead(blockHeight uint64, blockHash string) error
SaveLocalBlockHead 记录区块高度和hash到本地
func (*KTOBLockScanner) SaveUnscanRecord ¶
func (bs *KTOBLockScanner) SaveUnscanRecord(record *openwallet.UnscanRecord) error
SaveUnscanRecord 保存交易记录到钱包数据库
func (*KTOBLockScanner) SaveUnscannedTransaction ¶
func (this *KTOBLockScanner) SaveUnscannedTransaction(tx *BlockTransaction, reason string) error
func (*KTOBLockScanner) ScanBlock ¶
func (this *KTOBLockScanner) ScanBlock(height uint64) error
func (*KTOBLockScanner) ScanBlockTask ¶
func (this *KTOBLockScanner) ScanBlockTask()
func (*KTOBLockScanner) SetRescanBlockHeight ¶
func (this *KTOBLockScanner) SetRescanBlockHeight(height uint64) error
SetRescanBlockHeight 重置区块链扫描高度
func (*KTOBLockScanner) SupportBlockchainDAI ¶
func (bs *KTOBLockScanner) SupportBlockchainDAI() bool
SupportBlockchainDAI 支持外部设置区块链数据访问接口 @optional
func (*KTOBLockScanner) TransactionScanning ¶
func (this *KTOBLockScanner) TransactionScanning(tx *BlockTransaction) (*ExtractResult, error)
type KtoBlock ¶ added in v1.1.0
type KtoBlock struct {
BlockHeader
Transactions []BlockTransaction `json:"transactions"`
}
func (*KtoBlock) CreateOpenWalletBlockHeader ¶ added in v1.1.0
func (this *KtoBlock) CreateOpenWalletBlockHeader() *openwallet.BlockHeader
type KtoTransactionDecoder ¶ added in v1.0.2
type KtoTransactionDecoder struct {
openwallet.TransactionDecoderBase
AddrTxStatisMap *sync.Map
// contains filtered or unexported fields
}
func NewTransactionDecoder ¶
func NewTransactionDecoder(wm *WalletManager) *KtoTransactionDecoder
NewTransactionDecoder 交易单解析器
func (*KtoTransactionDecoder) CreateRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) CreateRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
CreateRawTransaction 创建交易单
func (*KtoTransactionDecoder) CreateSimpleRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) CreateSimpleRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction, tmpNonce *uint64) error
func (*KtoTransactionDecoder) CreateSimpleSummaryRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) CreateSimpleSummaryRawTransaction(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransactionWithError, error)
CreateSimpleSummaryRawTransaction 创建ETH汇总交易
func (*KtoTransactionDecoder) CreateSummaryRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) CreateSummaryRawTransaction(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransaction, error)
CreateSummaryRawTransaction 创建汇总交易,返回原始交易单数组
func (*KtoTransactionDecoder) CreateSummaryRawTransactionWithError ¶ added in v1.0.2
func (this *KtoTransactionDecoder) CreateSummaryRawTransactionWithError(wrapper openwallet.WalletDAI, sumRawTx *openwallet.SummaryRawTransaction) ([]*openwallet.RawTransactionWithError, error)
CreateSummaryRawTransactionWithError 创建汇总交易,返回能原始交易单数组(包含带错误的原始交易单)
func (*KtoTransactionDecoder) GetRawTransactionFeeRate ¶ added in v1.0.2
func (this *KtoTransactionDecoder) GetRawTransactionFeeRate() (feeRate string, unit string, err error)
func (*KtoTransactionDecoder) GetTransactionCount ¶ added in v1.0.2
func (this *KtoTransactionDecoder) GetTransactionCount(address string) (uint64, error)
func (*KtoTransactionDecoder) GetTransactionCount2 ¶ added in v1.0.2
func (this *KtoTransactionDecoder) GetTransactionCount2(address string) (*AddressTxStatistic, uint64, error)
func (*KtoTransactionDecoder) RemoveOutdatedAddrStatic ¶ added in v1.0.2
func (this *KtoTransactionDecoder) RemoveOutdatedAddrStatic()
func (*KtoTransactionDecoder) RunClearAddrStatic ¶ added in v1.0.2
func (this *KtoTransactionDecoder) RunClearAddrStatic()
func (*KtoTransactionDecoder) SetTransactionCount ¶ added in v1.0.2
func (this *KtoTransactionDecoder) SetTransactionCount(address string, transactionCount uint64) error
func (*KtoTransactionDecoder) SignRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) SignRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
SignRawTransaction 签名交易单
func (*KtoTransactionDecoder) SubmitRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) SubmitRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) (*openwallet.Transaction, error)
SendRawTransaction 广播交易单
func (*KtoTransactionDecoder) SubmitSimpleRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) SubmitSimpleRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) (*openwallet.Transaction, error)
func (*KtoTransactionDecoder) VerifyRawTransaction ¶ added in v1.0.2
func (this *KtoTransactionDecoder) VerifyRawTransaction(wrapper openwallet.WalletDAI, rawTx *openwallet.RawTransaction) error
VerifyRawTransaction 验证交易单,验证交易单并返回加入签名后的交易单
type KtoTransactionReceipt ¶ added in v1.1.0
type KtoTransactionReceipt struct {
Logs []KtoEvent `json:"logs"`
GasUsed string `json:"gasUsed"`
Status string `json:"status"`
}
func (*KtoTransactionReceipt) ParseTransferEvent ¶ added in v1.1.0
func (this *KtoTransactionReceipt) ParseTransferEvent() map[string][]*TransferEvent
type SaveResult ¶
SaveResult 保存结果
type TokenAddrVec ¶
type TokenAddrVec struct {
// contains filtered or unexported fields
}
func (*TokenAddrVec) Len ¶
func (this *TokenAddrVec) Len() int
func (*TokenAddrVec) Less ¶
func (this *TokenAddrVec) Less(i, j int) bool
func (*TokenAddrVec) Swap ¶
func (this *TokenAddrVec) Swap(i, j int)
type TransferEvent ¶
type TxpoolContent ¶
type TxpoolContent struct {
Pending map[string]map[string]BlockTransaction `json:"pending"`
}
func (*TxpoolContent) GetPendingTxCountForAddr ¶
func (this *TxpoolContent) GetPendingTxCountForAddr(addr string) int
func (*TxpoolContent) GetSequentTxNonce ¶
type Wallet ¶
type Wallet struct {
WalletID string `json:"rootid" storm:"id"`
Alias string `json:"alias"`
Password string `json:"password"`
RootPub string `json:"rootpub"`
RootPath string
KeyFile string
HdPath string
PublicKey string
AddressCount uint64
// contains filtered or unexported fields
}
func GetWalletKey ¶
func GetWalletKeys ¶
func (*Wallet) ClearAllTransactions ¶
func (*Wallet) DeleteTransactionByHeight ¶
func (*Wallet) DumpWalletDB ¶
func (*Wallet) HDKey2 ¶
func (this *Wallet) HDKey2(password string) (*hdkeystore.HDKey, error)
HDKey 获取钱包密钥,需要密码
func (*Wallet) RestoreFromDb ¶
func (*Wallet) SaveTransactions ¶
func (this *Wallet) SaveTransactions(dbPath string, txs []BlockTransaction) error
type WalletConfig ¶
type WalletConfig struct {
//币种
Symbol string
MasterKey string
RootDir string
//RPC认证账户名
//RpcUser string
//RPC认证账户密码
//RpcPassword string
//证书目录
//CertsDir string
//钥匙备份路径
KeyDir string
//地址导出路径
AddressDir string
//配置文件路径
ConfigFilePath string
//配置文件名
ConfigFileName string
//rpc证书
//CertFileName string
//区块链数据文件
//BlockchainFile string
//是否测试网络
IsTestNet bool
// 核心钱包是否只做监听
//CoreWalletWatchOnly bool
//最大的输入数量
//MaxTxInputs int
//本地数据库文件路径
DbPath string
//备份路径
BackupDir string
//钱包服务API
ServerRpcUrl string
//钱包安装的路径
//NodeInstallPath string
//钱包数据文件目录
//WalletDataPath string
//汇总阀值
//ThreaholdStr string
Threshold *big.Int `json:"-"`
//汇总地址
SumAddress string
//汇总执行间隔时间
CycleSeconds uint64 //time.Duration
//默认配置内容
// DefaultConfig string
//曲线类型
CurveType uint32
//小数位长度
// CoinDecimal decimal.Decimal `json:"-"`
EthereumKeyPath string
//是否完全依靠本地维护nonce
LocalNonce bool
ChainID uint64
//数据目录
DataDir string
//固定gasLimit值
FixGasLimit *big.Int
}
func NewConfig ¶
func NewConfig(symbol string) *WalletConfig
func (*WalletConfig) LoadConfig ¶
func (this *WalletConfig) LoadConfig(configFilePath string, configFileName string) (*WalletConfig, error)
type WalletManager ¶
type WalletManager struct {
openwallet.AssetsAdapterBase
Storage *hdkeystore.HDKeystore //秘钥存取
WalletClient *Client // 节点客户端
Config *WalletConfig //钱包管理配置
WalletsInSum map[string]*openwallet.Wallet //参与汇总的钱包
Blockscanner openwallet.BlockScanner //区块扫描器
Decoder openwallet.AddressDecoder //地址编码器
TxDecoder openwallet.TransactionDecoder //交易单编码器
WalletInSumOld map[string]*Wallet
ContractDecoder openwallet.SmartContractDecoder //
//StorageOld *keystore.HDKeystore
ConfigPath string
RootPath string
DefaultConfig string
Log *log.OWLogger //日志工具
// contains filtered or unexported fields
}
func NewWalletManager ¶
func NewWalletManager() *WalletManager
func (*WalletManager) AddWalletInSummary ¶
func (this *WalletManager) AddWalletInSummary(wid string, wallet *Wallet)
AddWalletInSummary 添加汇总钱包账户
func (*WalletManager) BackupWallet2 ¶
func (*WalletManager) BackupWalletToDefaultPath ¶
func (this *WalletManager) BackupWalletToDefaultPath(wallet *Wallet, password string) (string, error)
func (*WalletManager) CreateWallet ¶
func (*WalletManager) GetAddressDecode ¶
func (this *WalletManager) GetAddressDecode() openwallet.AddressDecoder
GetAddressDecode 地址解析器
func (*WalletManager) GetAssetsLogger ¶
func (this *WalletManager) GetAssetsLogger() *log.OWLogger
GetAssetsLogger 获取资产账户日志工具
func (*WalletManager) GetBlockScanner ¶
func (this *WalletManager) GetBlockScanner() openwallet.BlockScanner
GetBlockScanner 获取区块链
func (*WalletManager) GetConfig ¶
func (this *WalletManager) GetConfig() WalletConfig
func (*WalletManager) GetERC20TokenTransactionFeeEstimated ¶
func (this *WalletManager) GetERC20TokenTransactionFeeEstimated(from string, to string, data string) (*txFeeInfo, error)
func (*WalletManager) GetNonceForAddress ¶
func (this *WalletManager) GetNonceForAddress(address string) (uint64, error)
func (*WalletManager) GetNonceForAddress2 ¶
func (this *WalletManager) GetNonceForAddress2(address string) (uint64, error)
func (*WalletManager) GetSimpleTransactionFeeEstimated ¶
func (*WalletManager) GetSmartContractDecoder ¶
func (this *WalletManager) GetSmartContractDecoder() openwallet.SmartContractDecoder
func (*WalletManager) GetTransactionDecoder ¶
func (this *WalletManager) GetTransactionDecoder() openwallet.TransactionDecoder
GetTransactionDecoder 交易单解析器
func (*WalletManager) GetTransactionFeeEstimated ¶
func (*WalletManager) ImportWatchOnlyAddress ¶
func (this *WalletManager) ImportWatchOnlyAddress(address ...*openwallet.Address) error
ImportWatchOnlyAddress 导入观测地址
func (*WalletManager) InitAssetsConfig ¶
func (this *WalletManager) InitAssetsConfig() (config.Configer, error)
InitAssetsConfig 初始化默认配置
func (*WalletManager) KtoSendRawTransaction ¶
func (this *WalletManager) KtoSendRawTransaction(from, to string, amount, nonce uint64, time int64, hash, signature []byte) (string, error)
发送离线签名的交易
func (*WalletManager) LoadAssetsConfig ¶
func (this *WalletManager) LoadAssetsConfig(c config.Configer) error
func (*WalletManager) PrintConfig ¶
func (this *WalletManager) PrintConfig() error
func (*WalletManager) RecoverUnscannedTransactions ¶
func (this *WalletManager) RecoverUnscannedTransactions(unscannedTxs []*openwallet.UnscanRecord) ([]BlockTransaction, error)
func (*WalletManager) SendTransactionToAddr ¶
func (this *WalletManager) SendTransactionToAddr(param map[string]interface{}) (string, error)
发送需要线上签名的交易
func (*WalletManager) UnlockWallet ¶
func (this *WalletManager) UnlockWallet(wallet *Wallet, password string) error