mirror of
https://github.com/alexgo-io/gaze-indexer.git
synced 2026-04-30 20:52:01 +08:00
fix: add different genesis runes config for each network (#54)
* fix: add different genesis runes config for each network * fix: use slogx.Stringer * refactor: remove unused value
This commit is contained in:
@@ -2,12 +2,16 @@ package constants
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/Cleverse/go-utilities/utils"
|
"github.com/Cleverse/go-utilities/utils"
|
||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
"github.com/gaze-network/indexer-network/common"
|
"github.com/gaze-network/indexer-network/common"
|
||||||
"github.com/gaze-network/indexer-network/core/types"
|
"github.com/gaze-network/indexer-network/core/types"
|
||||||
|
"github.com/gaze-network/indexer-network/modules/runes/runes"
|
||||||
"github.com/gaze-network/indexer-network/pkg/logger"
|
"github.com/gaze-network/indexer-network/pkg/logger"
|
||||||
|
"github.com/gaze-network/uint128"
|
||||||
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -35,6 +39,80 @@ var StartingBlockHeader = map[common.Network]types.BlockHeader{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GenesisRuneConfig struct {
|
||||||
|
RuneId runes.RuneId
|
||||||
|
Name string
|
||||||
|
Number uint64
|
||||||
|
Divisibility uint8
|
||||||
|
Premine uint128.Uint128
|
||||||
|
SpacedRune runes.SpacedRune
|
||||||
|
Symbol rune
|
||||||
|
Terms *runes.Terms
|
||||||
|
Turbo bool
|
||||||
|
EtchingTxHash chainhash.Hash
|
||||||
|
EtchedAt time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
var GenesisRuneConfigMap = map[common.Network]GenesisRuneConfig{
|
||||||
|
common.NetworkMainnet: {
|
||||||
|
RuneId: runes.RuneId{BlockHeight: 1, TxIndex: 0},
|
||||||
|
Number: 0,
|
||||||
|
Divisibility: 0,
|
||||||
|
Premine: uint128.Zero,
|
||||||
|
SpacedRune: runes.NewSpacedRune(runes.NewRune(2055900680524219742), 0b10000000),
|
||||||
|
Symbol: '\u29c9',
|
||||||
|
Terms: &runes.Terms{
|
||||||
|
Amount: lo.ToPtr(uint128.From64(1)),
|
||||||
|
Cap: &uint128.Max,
|
||||||
|
HeightStart: lo.ToPtr(uint64(840000)),
|
||||||
|
HeightEnd: lo.ToPtr(uint64(1050000)),
|
||||||
|
OffsetStart: nil,
|
||||||
|
OffsetEnd: nil,
|
||||||
|
},
|
||||||
|
Turbo: true,
|
||||||
|
EtchingTxHash: chainhash.Hash{},
|
||||||
|
EtchedAt: time.Time{},
|
||||||
|
},
|
||||||
|
common.NetworkFractalMainnet: {
|
||||||
|
RuneId: runes.RuneId{BlockHeight: 1, TxIndex: 0},
|
||||||
|
Number: 0,
|
||||||
|
Divisibility: 0,
|
||||||
|
Premine: uint128.Zero,
|
||||||
|
SpacedRune: runes.NewSpacedRune(runes.NewRune(2055900680524219742), 0b10000000),
|
||||||
|
Symbol: '\u29c9',
|
||||||
|
Terms: &runes.Terms{
|
||||||
|
Amount: lo.ToPtr(uint128.From64(1)),
|
||||||
|
Cap: &uint128.Max,
|
||||||
|
HeightStart: lo.ToPtr(uint64(84000)),
|
||||||
|
HeightEnd: lo.ToPtr(uint64(2184000)),
|
||||||
|
OffsetStart: nil,
|
||||||
|
OffsetEnd: nil,
|
||||||
|
},
|
||||||
|
Turbo: true,
|
||||||
|
EtchingTxHash: chainhash.Hash{},
|
||||||
|
EtchedAt: time.Time{},
|
||||||
|
},
|
||||||
|
common.NetworkFractalTestnet: {
|
||||||
|
RuneId: runes.RuneId{BlockHeight: 1, TxIndex: 0},
|
||||||
|
Number: 0,
|
||||||
|
Divisibility: 0,
|
||||||
|
Premine: uint128.Zero,
|
||||||
|
SpacedRune: runes.NewSpacedRune(runes.NewRune(2055900680524219742), 0b10000000),
|
||||||
|
Symbol: '\u29c9',
|
||||||
|
Terms: &runes.Terms{
|
||||||
|
Amount: lo.ToPtr(uint128.From64(1)),
|
||||||
|
Cap: &uint128.Max,
|
||||||
|
HeightStart: lo.ToPtr(uint64(84000)),
|
||||||
|
HeightEnd: lo.ToPtr(uint64(2184000)),
|
||||||
|
OffsetStart: nil,
|
||||||
|
OffsetEnd: nil,
|
||||||
|
},
|
||||||
|
Turbo: true,
|
||||||
|
EtchingTxHash: chainhash.Hash{},
|
||||||
|
EtchedAt: time.Time{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
func NetworkHasGenesisRune(network common.Network) bool {
|
func NetworkHasGenesisRune(network common.Network) bool {
|
||||||
switch network {
|
switch network {
|
||||||
case common.NetworkMainnet, common.NetworkFractalMainnet, common.NetworkFractalTestnet:
|
case common.NetworkMainnet, common.NetworkFractalMainnet, common.NetworkFractalTestnet:
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
|
||||||
"github.com/btcsuite/btcd/wire"
|
"github.com/btcsuite/btcd/wire"
|
||||||
"github.com/cockroachdb/errors"
|
"github.com/cockroachdb/errors"
|
||||||
"github.com/gaze-network/indexer-network/common"
|
"github.com/gaze-network/indexer-network/common"
|
||||||
@@ -20,7 +19,6 @@ import (
|
|||||||
"github.com/gaze-network/indexer-network/pkg/logger/slogx"
|
"github.com/gaze-network/indexer-network/pkg/logger/slogx"
|
||||||
"github.com/gaze-network/indexer-network/pkg/reportingclient"
|
"github.com/gaze-network/indexer-network/pkg/reportingclient"
|
||||||
"github.com/gaze-network/uint128"
|
"github.com/gaze-network/uint128"
|
||||||
"github.com/samber/lo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Make sure to implement the Bitcoin Processor interface
|
// Make sure to implement the Bitcoin Processor interface
|
||||||
@@ -120,39 +118,34 @@ func (p *Processor) ensureValidState(ctx context.Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var genesisRuneId = runes.RuneId{BlockHeight: 1, TxIndex: 0}
|
|
||||||
|
|
||||||
func (p *Processor) ensureGenesisRune(ctx context.Context, network common.Network) error {
|
func (p *Processor) ensureGenesisRune(ctx context.Context, network common.Network) error {
|
||||||
_, err := p.runesDg.GetRuneEntryByRuneId(ctx, genesisRuneId)
|
genesisRuneConfig, ok := constants.GenesisRuneConfigMap[network]
|
||||||
|
if !ok {
|
||||||
|
logger.Panic("genesis rune config not found", slogx.Stringer("network", network))
|
||||||
|
}
|
||||||
|
_, err := p.runesDg.GetRuneEntryByRuneId(ctx, genesisRuneConfig.RuneId)
|
||||||
if err != nil && !errors.Is(err, errs.NotFound) {
|
if err != nil && !errors.Is(err, errs.NotFound) {
|
||||||
return errors.Wrap(err, "failed to get genesis rune entry")
|
return errors.Wrap(err, "failed to get genesis rune entry")
|
||||||
}
|
}
|
||||||
if errors.Is(err, errs.NotFound) {
|
if errors.Is(err, errs.NotFound) {
|
||||||
runeEntry := &runes.RuneEntry{
|
runeEntry := &runes.RuneEntry{
|
||||||
RuneId: genesisRuneId,
|
RuneId: genesisRuneConfig.RuneId,
|
||||||
Number: 0,
|
Number: genesisRuneConfig.Number,
|
||||||
Divisibility: 0,
|
Divisibility: genesisRuneConfig.Divisibility,
|
||||||
Premine: uint128.Zero,
|
Premine: genesisRuneConfig.Premine,
|
||||||
SpacedRune: runes.NewSpacedRune(runes.NewRune(2055900680524219742), 0b10000000),
|
SpacedRune: genesisRuneConfig.SpacedRune,
|
||||||
Symbol: '\u29c9',
|
Symbol: genesisRuneConfig.Symbol,
|
||||||
Terms: &runes.Terms{
|
Terms: genesisRuneConfig.Terms,
|
||||||
Amount: lo.ToPtr(uint128.From64(1)),
|
Turbo: genesisRuneConfig.Turbo,
|
||||||
Cap: &uint128.Max,
|
|
||||||
HeightStart: lo.ToPtr(network.HalvingInterval() * 4),
|
|
||||||
HeightEnd: lo.ToPtr(network.HalvingInterval() * 5),
|
|
||||||
OffsetStart: nil,
|
|
||||||
OffsetEnd: nil,
|
|
||||||
},
|
|
||||||
Turbo: true,
|
|
||||||
Mints: uint128.Zero,
|
Mints: uint128.Zero,
|
||||||
BurnedAmount: uint128.Zero,
|
BurnedAmount: uint128.Zero,
|
||||||
CompletedAt: time.Time{},
|
CompletedAt: time.Time{},
|
||||||
CompletedAtHeight: nil,
|
CompletedAtHeight: nil,
|
||||||
EtchingBlock: 1,
|
EtchingBlock: genesisRuneConfig.RuneId.BlockHeight,
|
||||||
EtchingTxHash: chainhash.Hash{},
|
EtchingTxHash: genesisRuneConfig.EtchingTxHash,
|
||||||
EtchedAt: time.Time{},
|
EtchedAt: genesisRuneConfig.EtchedAt,
|
||||||
}
|
}
|
||||||
if err := p.runesDg.CreateRuneEntry(ctx, runeEntry, genesisRuneId.BlockHeight); err != nil {
|
if err := p.runesDg.CreateRuneEntry(ctx, runeEntry, genesisRuneConfig.RuneId.BlockHeight); err != nil {
|
||||||
return errors.Wrap(err, "failed to create genesis rune entry")
|
return errors.Wrap(err, "failed to create genesis rune entry")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user