mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-10 16:16:47 +00:00

* [NOD-404] Calculate mass in API server * [NOD-404] Fix uninitialized maps * [NOD-404] Use txID instead of prevDBTransactionsOutput.Transaction.TransactionID
112 lines
2.9 KiB
Go
112 lines
2.9 KiB
Go
package dbmodels
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Block is the gorm model for the 'blocks' table
|
|
type Block struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
BlockHash string
|
|
AcceptingBlockID *uint64
|
|
AcceptingBlock *Block
|
|
Version int32
|
|
HashMerkleRoot string
|
|
AcceptedIDMerkleRoot string
|
|
UTXOCommitment string
|
|
Timestamp time.Time
|
|
Bits uint32
|
|
Nonce uint64
|
|
BlueScore uint64
|
|
IsChainBlock bool
|
|
Mass uint64
|
|
ParentBlocks []Block `gorm:"many2many:parent_blocks;"`
|
|
}
|
|
|
|
// ParentBlock is the gorm model for the 'parent_blocks' table
|
|
type ParentBlock struct {
|
|
BlockID uint64
|
|
Block Block
|
|
ParentBlockID uint64
|
|
ParentBlock Block
|
|
}
|
|
|
|
// RawBlock is the gorm model for the 'raw_blocks' table
|
|
type RawBlock struct {
|
|
BlockID uint64
|
|
Block Block
|
|
BlockData []byte
|
|
}
|
|
|
|
// Subnetwork is the gorm model for the 'subnetworks' table
|
|
type Subnetwork struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
SubnetworkID string
|
|
GasLimit *uint64
|
|
}
|
|
|
|
// Transaction is the gorm model for the 'transactions' table
|
|
type Transaction struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
AcceptingBlockID *uint64
|
|
AcceptingBlock *Block
|
|
TransactionHash string
|
|
TransactionID string
|
|
LockTime uint64
|
|
SubnetworkID uint64
|
|
Subnetwork Subnetwork
|
|
Gas uint64
|
|
PayloadHash string
|
|
Payload []byte
|
|
Mass uint64
|
|
Blocks []Block `gorm:"many2many:transactions_to_blocks;"`
|
|
TransactionOutputs []TransactionOutput
|
|
TransactionInputs []TransactionInput
|
|
}
|
|
|
|
// TransactionBlock is the gorm model for the 'transactions_to_blocks' table
|
|
type TransactionBlock struct {
|
|
TransactionID uint64
|
|
Transaction Transaction
|
|
BlockID uint64
|
|
Block Block
|
|
Index uint32
|
|
}
|
|
|
|
// TableName returns the table name associated to the
|
|
// TransactionBlock gorm model
|
|
func (TransactionBlock) TableName() string {
|
|
return "transactions_to_blocks"
|
|
}
|
|
|
|
// TransactionOutput is the gorm model for the 'transaction_outputs' table
|
|
type TransactionOutput struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
TransactionID uint64
|
|
Transaction Transaction
|
|
Index uint32
|
|
Value uint64
|
|
ScriptPubKey []byte
|
|
IsSpent bool
|
|
AddressID uint64
|
|
Address Address
|
|
}
|
|
|
|
// TransactionInput is the gorm model for the 'transaction_inputs' table
|
|
type TransactionInput struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
TransactionID uint64
|
|
Transaction Transaction
|
|
PreviousTransactionOutputID uint64
|
|
PreviousTransactionOutput TransactionOutput
|
|
Index uint32
|
|
SignatureScript []byte
|
|
Sequence uint64
|
|
}
|
|
|
|
// Address is the gorm model for the 'addresses' table
|
|
type Address struct {
|
|
ID uint64 `gorm:"primary_key"`
|
|
Address string
|
|
}
|