mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-01-12 08:34:28 +08:00
* feat: recover nodesale module. * fix: refactored. * fix: fix table type. * fix: add entity * fix: bug UTC time. * ci: try to tidy before testing * ci: touch result file * ci: use echo to create new file * fix: try to skip test in ci * fix: remove os.Exit * fix: handle error * feat: add todo note * fix: Cannot run nodesale test because qtx is not initiated. * fix: 50% chance public key compare incorrectly. * fix: more consistent SQL * fix: sanity refactor. * fix: remove unused code. * fix: move last_block_default to config file. * fix: minor mistakes. * fix: * fix: refactor * fix: refactor * fix: delegate tx hash not record into db. * refactor: prepare for moving integration tests. * refactor: convert to unit tests. * fix: change to using input values since output values deducted fee. * feat: add extra unit test. * fix: wrong timestamp format. * fix: handle block timeout = 0 --------- Co-authored-by: Gaze <gazenw@users.noreply.github.com>
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package nodesale
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
|
"github.com/btcsuite/btcd/txscript"
|
|
"github.com/decred/dcrd/dcrec/secp256k1/v4"
|
|
"github.com/gaze-network/indexer-network/core/types"
|
|
"github.com/gaze-network/indexer-network/modules/nodesale/protobuf"
|
|
"google.golang.org/protobuf/encoding/protojson"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
var (
|
|
testBlockHeight uint64 = 101
|
|
testTxIndex uint32 = 1
|
|
)
|
|
|
|
func assembleTestEvent(privateKey *secp256k1.PrivateKey, blockHashHex, txHashHex string, blockHeight uint64, txIndex uint32, message *protobuf.NodeSaleEvent) (NodeSaleEvent, *types.Block) {
|
|
blockHash, _ := chainhash.NewHashFromStr(blockHashHex)
|
|
txHash, _ := chainhash.NewHashFromStr(txHashHex)
|
|
|
|
rawData, _ := proto.Marshal(message)
|
|
|
|
builder := txscript.NewScriptBuilder()
|
|
builder.AddOp(txscript.OP_FALSE)
|
|
builder.AddOp(txscript.OP_IF)
|
|
builder.AddData(rawData)
|
|
builder.AddOp(txscript.OP_ENDIF)
|
|
|
|
messageJson, _ := protojson.Marshal(message)
|
|
|
|
if blockHeight == 0 {
|
|
blockHeight = testBlockHeight
|
|
testBlockHeight++
|
|
}
|
|
if txIndex == 0 {
|
|
txIndex = testTxIndex
|
|
testTxIndex++
|
|
}
|
|
|
|
event := NodeSaleEvent{
|
|
Transaction: &types.Transaction{
|
|
BlockHeight: int64(blockHeight),
|
|
BlockHash: *blockHash,
|
|
Index: uint32(txIndex),
|
|
TxHash: *txHash,
|
|
},
|
|
RawData: rawData,
|
|
EventMessage: message,
|
|
EventJson: messageJson,
|
|
TxPubkey: privateKey.PubKey(),
|
|
}
|
|
block := &types.Block{
|
|
Header: types.BlockHeader{
|
|
Timestamp: time.Now().UTC(),
|
|
},
|
|
}
|
|
return event, block
|
|
}
|