Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions cmd/consts/da.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const (
Celestia DAType = "celestia"
Avail DAType = "avail"
WeaveVM DAType = "weavevm"
Near DAType = "near"
)

type DaNetwork string
Expand All @@ -37,6 +38,8 @@ const (
AvailMainnet DaNetwork = "avail-1" // change this with correct mainnet id
WeaveVMTestnet DaNetwork = "alphanet"
WeaveVMMainnet DaNetwork = "weavevm" // change this with correct mainnet id
NearTestnet DaNetwork = "testnet"
NearMainnet DaNetwork = "mainnet"
)

var DaNetworks = map[string]DaData{
Expand Down Expand Up @@ -114,4 +117,22 @@ var DaNetworks = map[string]DaData{
StateNodes: []string{},
GasPrice: "",
},
string(NearTestnet): {
Backend: Near,
ApiUrl: "",
ID: NearTestnet,
RpcUrl: "",
CurrentStateNode: "",
StateNodes: []string{},
GasPrice: "",
},
string(NearMainnet): {
Backend: Near,
ApiUrl: "",
ID: NearMainnet,
RpcUrl: "",
CurrentStateNode: "",
StateNodes: []string{},
GasPrice: "",
},
}
17 changes: 17 additions & 0 deletions cmd/rollapp/init/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,23 @@ func runInit(
})
}

case consts.Near:
// Initialize DAManager for Near
damanager := datalayer.NewDAManager(consts.Near, home, kb)

// Retrieve DA account address
daAddress, err := damanager.GetDAAccountAddress()
if err != nil {
return fmt.Errorf("failed to get Near account address: %w", err)
}

// Append DA account address if available
if daAddress != nil {
addresses = append(addresses, keys.KeyInfo{
Name: damanager.GetKeyName(),
Address: daAddress.Address,
})
}
default:
return fmt.Errorf("unsupported DA backend: %s", ic.DA.Backend)
}
Expand Down
9 changes: 9 additions & 0 deletions data_layer/da_layer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/dymensionxyz/roller/data_layer/avail"
"github.com/dymensionxyz/roller/data_layer/celestia"
"github.com/dymensionxyz/roller/data_layer/damock"
"github.com/dymensionxyz/roller/data_layer/near"
"github.com/dymensionxyz/roller/data_layer/weavevm"
"github.com/dymensionxyz/roller/utils/keys"
"github.com/dymensionxyz/roller/utils/roller"
Expand Down Expand Up @@ -48,6 +49,8 @@ func NewDAManager(datype consts.DAType, home string, kb consts.SupportedKeyringB
dalayer = avail.NewAvail(home)
case consts.WeaveVM:
dalayer = weavevm.NewWeaveVM(home)
case consts.Near:
dalayer = near.NewNear(home)
case consts.Local:
dalayer = &damock.DAMock{}
default:
Expand All @@ -72,6 +75,8 @@ func GetDaInfo(env, daBackend string) (*consts.DaData, error) {
daNetwork = string(consts.AvailTestnet)
case string(consts.WeaveVM):
daNetwork = string(consts.WeaveVMTestnet)
case string(consts.Near):
daNetwork = string(consts.NearTestnet)
default:
return nil, fmt.Errorf("unsupported DA backend: %s", daBackend)
}
Expand All @@ -83,6 +88,8 @@ func GetDaInfo(env, daBackend string) (*consts.DaData, error) {
daNetwork = string(consts.AvailMainnet)
case string(consts.WeaveVM):
daNetwork = string(consts.WeaveVMMainnet)
case string(consts.Near):
daNetwork = string(consts.NearMainnet)
default:
return nil, fmt.Errorf("unsupported DA backend: %s", daBackend)
}
Expand All @@ -94,6 +101,8 @@ func GetDaInfo(env, daBackend string) (*consts.DaData, error) {
daNetwork = string(consts.AvailTestnet)
case string(consts.WeaveVM):
daNetwork = string(consts.WeaveVMTestnet)
case string(consts.Near):
daNetwork = string(consts.NearTestnet)
default:
return nil, fmt.Errorf("unsupported DA backend: %s", daBackend)
}
Expand Down
103 changes: 103 additions & 0 deletions data_layer/near/near.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package near

import (
"os/exec"

"github.com/dymensionxyz/roller/utils/keys"
"github.com/dymensionxyz/roller/utils/roller"
)

const (
ConfigFileName = "near.toml"
)

type RequestPayload struct {
JSONRPC string `json:"jsonrpc"`
Method string `json:"method"`
Params []interface{} `json:"params"`
ID int `json:"id"`
}

type EthBalanceResponse struct {
ID int `json:"id"`
JsonRPC string `json:"jsonrpc"`
Result string `json:"result"`
}

type Near struct {
Root string
PrivateKey string
RpcEndpoint string
ChainID uint32
}

func (w *Near) GetPrivateKey() (string, error) {
return w.PrivateKey, nil
}

func (w *Near) SetMetricsEndpoint(endpoint string) {
}

func NewNear(root string) *Near {
return nil
}

func (w *Near) InitializeLightNodeConfig() (string, error) {
return "", nil
}

func (w *Near) GetDAAccountAddress() (*keys.KeyInfo, error) {
return nil, nil
}

func (w *Near) GetRootDirectory() string {
return w.Root
}

func (w *Near) CheckDABalance() ([]keys.NotFundedAddressData, error) {
return nil, nil
}

func (w *Near) GetStartDACmd() *exec.Cmd {
return nil
}

func (w *Near) GetDAAccData(cfg roller.RollappConfig) ([]keys.AccountData, error) {
return nil, nil
}

func (w *Near) GetSequencerDAConfig(_ string) string {
return ""
}

func (w *Near) SetRPCEndpoint(rpc string) {
w.RpcEndpoint = rpc
}

func (w *Near) GetLightNodeEndpoint() string {
return ""
}

func (w *Near) GetNetworkName() string {
return "near"
}

func (w *Near) GetStatus(c roller.RollappConfig) string {
return "Active"
}

func (w *Near) GetKeyName() string {
return "near"
}

func (w *Near) GetNamespaceID() string {
return ""
}

func (w *Near) GetAppID() uint32 {
return 0
}

func GetBalance(jsonRPCURL, key string) (string, error) {
return "", nil
}
47 changes: 47 additions & 0 deletions data_layer/near/utils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package near

import (
"os"
"path/filepath"

"github.com/pelletier/go-toml"

"github.com/dymensionxyz/roller/cmd/consts"
)

func writeConfigToTOML(path string, w Near) error {

Check failure on line 12 in data_layer/near/utils.go

View workflow job for this annotation

GitHub Actions / lint

func `writeConfigToTOML` is unused (unused)
tomlBytes, err := toml.Marshal(w)
if err != nil {
return err
}
dir := filepath.Dir(path)
// nolint:gofumpt
if err := os.MkdirAll(dir, 0o755); err != nil {
return err
}
// nolint:gofumpt
err = os.WriteFile(path, tomlBytes, 0o644)
if err != nil {
return err
}

return nil
}

func loadConfigFromTOML(path string) (Near, error) {

Check failure on line 31 in data_layer/near/utils.go

View workflow job for this annotation

GitHub Actions / lint

func `loadConfigFromTOML` is unused (unused)
var config Near
tomlBytes, err := os.ReadFile(path)
if err != nil {
return config, err
}
err = toml.Unmarshal(tomlBytes, &config)
if err != nil {
return config, err
}

return config, nil
}

func GetCfgFilePath(rollerHome string) string {
return filepath.Join(rollerHome, consts.ConfigDirName.DALightNode, ConfigFileName)
}
2 changes: 1 addition & 1 deletion utils/roller/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package roller

import "github.com/dymensionxyz/roller/cmd/consts"

var SupportedDas = []consts.DAType{consts.Celestia, consts.Avail, consts.WeaveVM, consts.Local}
var SupportedDas = []consts.DAType{consts.Celestia, consts.Avail, consts.WeaveVM, consts.Near, consts.Local}

type RollappConfig struct {
// new roller.toml
Expand Down
2 changes: 1 addition & 1 deletion utils/roller/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

func IsValidDAType(t string) bool {
switch consts.DAType(t) {
case consts.Local, consts.Celestia, consts.Avail, consts.WeaveVM:
case consts.Local, consts.Celestia, consts.Avail, consts.WeaveVM, consts.Near:
return true
}
return false
Expand Down
Loading