package main
import (
"fmt"
"gorm.io/gorm"
)
// Pool to store pool attributes
type Pool struct {
gorm.Model
Coin string `gorm:"unique;not null"`
LastBlockNumber uint64
}
// NewPool creates a Pool
func NewPool(coin string) *Pool {
return &Pool{Coin: coin}
// String represents Pool to a printable format
func (p *Pool) String() string {
return fmt.Sprintf("Pool<%s>", p.Coin)
// Block to store block attributes
type Block struct {
Hash string `gorm:"unique;not null"`
Number uint64 `gorm:"not null"`
Reward float64 `gorm:"not null"`
// NewBlock creates a Block
func NewBlock(hash string, number uint64, reward float64) *Block {
return &Block{
Hash: hash,
Number: number,
Reward: reward,
// String represents Block to a printable format
func (b *Block) String() string {
return fmt.Sprintf("Block<%d>", b.Number)