diff --git a/cmd/cmd_version.go b/cmd/cmd_version.go index 308bed2..9523c94 100644 --- a/cmd/cmd_version.go +++ b/cmd/cmd_version.go @@ -7,13 +7,13 @@ import ( "github.com/gaze-network/indexer-network/common/errs" "github.com/gaze-network/indexer-network/core/constants" "github.com/gaze-network/indexer-network/modules/nodesale" - "github.com/gaze-network/indexer-network/modules/runes" + runesconstants "github.com/gaze-network/indexer-network/modules/runes/constants" "github.com/spf13/cobra" ) var versions = map[string]string{ "": constants.Version, - "runes": runes.Version, + "runes": runesconstants.Version, "nodesale": nodesale.Version, } diff --git a/common/network.go b/common/network.go index 4710b0d..46ec539 100644 --- a/common/network.go +++ b/common/network.go @@ -5,18 +5,24 @@ import "github.com/btcsuite/btcd/chaincfg" type Network string const ( - NetworkMainnet Network = "mainnet" - NetworkTestnet Network = "testnet" + NetworkMainnet Network = "mainnet" + NetworkTestnet Network = "testnet" + NetworkFractalMainnet Network = "fractal-mainnet" + NetworkFractalTestnet Network = "fractal-testnet" ) var supportedNetworks = map[Network]struct{}{ - NetworkMainnet: {}, - NetworkTestnet: {}, + NetworkMainnet: {}, + NetworkTestnet: {}, + NetworkFractalMainnet: {}, + NetworkFractalTestnet: {}, } var chainParams = map[Network]*chaincfg.Params{ - NetworkMainnet: &chaincfg.MainNetParams, - NetworkTestnet: &chaincfg.TestNet3Params, + NetworkMainnet: &chaincfg.MainNetParams, + NetworkTestnet: &chaincfg.TestNet3Params, + NetworkFractalMainnet: &chaincfg.MainNetParams, + NetworkFractalTestnet: &chaincfg.MainNetParams, } func (n Network) IsSupported() bool { diff --git a/modules/runes/api/httphandler/get_current_block.go b/modules/runes/api/httphandler/get_current_block.go index b11db8b..87a28c2 100644 --- a/modules/runes/api/httphandler/get_current_block.go +++ b/modules/runes/api/httphandler/get_current_block.go @@ -1,28 +1,12 @@ package httphandler import ( - "github.com/Cleverse/go-utilities/utils" - "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/cockroachdb/errors" - "github.com/gaze-network/indexer-network/common" "github.com/gaze-network/indexer-network/common/errs" - "github.com/gaze-network/indexer-network/core/types" + "github.com/gaze-network/indexer-network/modules/runes/constants" "github.com/gofiber/fiber/v2" ) -var startingBlockHeader = map[common.Network]types.BlockHeader{ - common.NetworkMainnet: { - Height: 839999, - Hash: *utils.Must(chainhash.NewHashFromStr("0000000000000000000172014ba58d66455762add0512355ad651207918494ab")), - PrevBlock: *utils.Must(chainhash.NewHashFromStr("00000000000000000001dcce6ce7c8a45872cafd1fb04732b447a14a91832591")), - }, - common.NetworkTestnet: { - Height: 2583200, - Hash: *utils.Must(chainhash.NewHashFromStr("000000000006c5f0dfcd9e0e81f27f97a87aef82087ffe69cd3c390325bb6541")), - PrevBlock: *utils.Must(chainhash.NewHashFromStr("00000000000668f3bafac992f53424774515440cb47e1cb9e73af3f496139e28")), - }, -} - type getCurrentBlockResult struct { Hash string `json:"hash"` Height int64 `json:"height"` @@ -36,7 +20,7 @@ func (h *HttpHandler) GetCurrentBlock(ctx *fiber.Ctx) (err error) { if !errors.Is(err, errs.NotFound) { return errors.Wrap(err, "error during GetLatestBlock") } - blockHeader = startingBlockHeader[h.network] + blockHeader = constants.StartingBlockHeader[h.network] } resp := getCurrentBlockResponse{ diff --git a/modules/runes/api/httphandler/httphandler.go b/modules/runes/api/httphandler/httphandler.go index 246a0f9..6e0e9d5 100644 --- a/modules/runes/api/httphandler/httphandler.go +++ b/modules/runes/api/httphandler/httphandler.go @@ -41,6 +41,10 @@ func resolvePkScript(network common.Network, wallet string) ([]byte, bool) { return &chaincfg.MainNetParams case common.NetworkTestnet: return &chaincfg.TestNet3Params + case common.NetworkFractalMainnet: + return &chaincfg.MainNetParams + case common.NetworkFractalTestnet: + return &chaincfg.MainNetParams } panic("invalid network") }() diff --git a/modules/runes/constants.go b/modules/runes/constants/constants.go similarity index 91% rename from modules/runes/constants.go rename to modules/runes/constants/constants.go index 0a093ab..b5fa64f 100644 --- a/modules/runes/constants.go +++ b/modules/runes/constants/constants.go @@ -1,4 +1,4 @@ -package runes +package constants import ( "github.com/Cleverse/go-utilities/utils" @@ -13,7 +13,7 @@ const ( EventHashVersion = 1 ) -var startingBlockHeader = map[common.Network]types.BlockHeader{ +var StartingBlockHeader = map[common.Network]types.BlockHeader{ common.NetworkMainnet: { Height: 839999, Hash: *utils.Must(chainhash.NewHashFromStr("0000000000000000000172014ba58d66455762add0512355ad651207918494ab")), diff --git a/modules/runes/event_hash.go b/modules/runes/event_hash.go index 73efa1b..8d64660 100644 --- a/modules/runes/event_hash.go +++ b/modules/runes/event_hash.go @@ -11,6 +11,7 @@ import ( "github.com/btcsuite/btcd/wire" "github.com/cockroachdb/errors" "github.com/gaze-network/indexer-network/core/types" + "github.com/gaze-network/indexer-network/modules/runes/constants" "github.com/gaze-network/indexer-network/modules/runes/internal/entity" "github.com/gaze-network/indexer-network/modules/runes/runes" "github.com/gaze-network/uint128" @@ -28,7 +29,7 @@ func (p *Processor) calculateEventHash(header types.BlockHeader) (chainhash.Hash func (p *Processor) getHashPayload(header types.BlockHeader) ([]byte, error) { var sb strings.Builder - sb.WriteString("payload:v" + strconv.Itoa(EventHashVersion) + ":") + sb.WriteString("payload:v" + strconv.Itoa(constants.EventHashVersion) + ":") sb.WriteString("blockHash:") sb.Write(header.Hash[:]) diff --git a/modules/runes/processor.go b/modules/runes/processor.go index 0fcb528..cb39b54 100644 --- a/modules/runes/processor.go +++ b/modules/runes/processor.go @@ -11,6 +11,7 @@ import ( "github.com/gaze-network/indexer-network/common/errs" "github.com/gaze-network/indexer-network/core/indexer" "github.com/gaze-network/indexer-network/core/types" + "github.com/gaze-network/indexer-network/modules/runes/constants" "github.com/gaze-network/indexer-network/modules/runes/datagateway" "github.com/gaze-network/indexer-network/modules/runes/internal/entity" "github.com/gaze-network/indexer-network/modules/runes/runes" @@ -89,17 +90,17 @@ func (p *Processor) ensureValidState(ctx context.Context) error { // if not found, set indexer state if errors.Is(err, errs.NotFound) { if err := p.indexerInfoDg.SetIndexerState(ctx, entity.IndexerState{ - DBVersion: DBVersion, - EventHashVersion: EventHashVersion, + DBVersion: constants.DBVersion, + EventHashVersion: constants.EventHashVersion, }); err != nil { return errors.Wrap(err, "failed to set indexer state") } } else { - if indexerState.DBVersion != DBVersion { - return errors.Wrapf(errs.ConflictSetting, "db version mismatch: current version is %d. Please upgrade to version %d", indexerState.DBVersion, DBVersion) + if indexerState.DBVersion != constants.DBVersion { + return errors.Wrapf(errs.ConflictSetting, "db version mismatch: current version is %d. Please upgrade to version %d", indexerState.DBVersion, constants.DBVersion) } - if indexerState.EventHashVersion != EventHashVersion { - return errors.Wrapf(errs.ConflictSetting, "event version mismatch: current version is %d. Please reset rune's db first.", indexerState.EventHashVersion, EventHashVersion) + if indexerState.EventHashVersion != constants.EventHashVersion { + return errors.Wrapf(errs.ConflictSetting, "event version mismatch: current version is %d. Please reset rune's db first.", indexerState.EventHashVersion, constants.EventHashVersion) } } @@ -166,7 +167,7 @@ func (p *Processor) CurrentBlock(ctx context.Context) (types.BlockHeader, error) blockHeader, err := p.runesDg.GetLatestBlock(ctx) if err != nil { if errors.Is(err, errs.NotFound) { - return startingBlockHeader[p.network], nil + return constants.StartingBlockHeader[p.network], nil } return types.BlockHeader{}, errors.Wrap(err, "failed to get latest block") } diff --git a/modules/runes/processor_process.go b/modules/runes/processor_process.go index e442ddc..f819510 100644 --- a/modules/runes/processor_process.go +++ b/modules/runes/processor_process.go @@ -13,6 +13,7 @@ import ( "github.com/cockroachdb/errors" "github.com/gaze-network/indexer-network/common/errs" "github.com/gaze-network/indexer-network/core/types" + "github.com/gaze-network/indexer-network/modules/runes/constants" "github.com/gaze-network/indexer-network/modules/runes/datagateway" "github.com/gaze-network/indexer-network/modules/runes/internal/entity" "github.com/gaze-network/indexer-network/modules/runes/runes" @@ -687,10 +688,10 @@ func (p *Processor) flushBlock(ctx context.Context, blockHeader types.BlockHeade return errors.Wrap(err, "failed to calculate event hash") } prevIndexedBlock, err := runesDgTx.GetIndexedBlockByHeight(ctx, blockHeader.Height-1) - if err != nil && errors.Is(err, errs.NotFound) && blockHeader.Height-1 == startingBlockHeader[p.network].Height { + if err != nil && errors.Is(err, errs.NotFound) && blockHeader.Height-1 == constants.StartingBlockHeader[p.network].Height { prevIndexedBlock = &entity.IndexedBlock{ - Height: startingBlockHeader[p.network].Height, - Hash: startingBlockHeader[p.network].Hash, + Height: constants.StartingBlockHeader[p.network].Height, + Hash: constants.StartingBlockHeader[p.network].Hash, EventHash: chainhash.Hash{}, CumulativeEventHash: chainhash.Hash{}, } @@ -791,9 +792,9 @@ func (p *Processor) flushBlock(ctx context.Context, blockHeader types.BlockHeade if p.reportingClient != nil { if err := p.reportingClient.SubmitBlockReport(ctx, reportingclient.SubmitBlockReportPayload{ Type: "runes", - ClientVersion: Version, - DBVersion: DBVersion, - EventHashVersion: EventHashVersion, + ClientVersion: constants.Version, + DBVersion: constants.DBVersion, + EventHashVersion: constants.EventHashVersion, Network: p.network, BlockHeight: uint64(blockHeader.Height), BlockHash: blockHeader.Hash, diff --git a/modules/runes/runes/rune.go b/modules/runes/runes/rune.go index 213257b..149c078 100644 --- a/modules/runes/runes/rune.go +++ b/modules/runes/runes/rune.go @@ -122,6 +122,10 @@ func FirstRuneHeight(network common.Network) uint64 { return common.HalvingInterval * 4 case common.NetworkTestnet: return common.HalvingInterval * 12 + case common.NetworkFractalMainnet: + return 84000 + case common.NetworkFractalTestnet: + return 84000 } panic("invalid network") }