Skip to content

Commit

Permalink
v0.0.3
Browse files Browse the repository at this point in the history
  • Loading branch information
znn committed Mar 18, 2022
1 parent aee7ab6 commit b2e6a98
Show file tree
Hide file tree
Showing 61 changed files with 5,259 additions and 401 deletions.
24 changes: 24 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,33 @@

GO ?= latest

ifeq ($(OS),Windows_NT)
detected_OS := Windows
else
detected_OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
endif

ifeq ($(detected_OS),Windows)
EXECUTABLE=libznn.dll
endif
ifeq ($(detected_OS),Darwin)
EXECUTABLE=libznn.dylib
endif
ifeq ($(detected_OS),Linux)
EXECUTABLE=libznn.so
endif

SERVERMAIN = $(shell pwd)/main.go
LIBMAIN = $(shell pwd)/main_libznn.go
BUILDDIR = $(shell pwd)/build


$(EXECUTABLE):
go build -o $(BUILDDIR)/$(EXECUTABLE) -buildmode=c-shared -tags libznn $(LIBMAIN)

libznn: $(EXECUTABLE) ## Build binaries
@echo "Build libznn done."

znnd:
go build -o $(BUILDDIR)/znnd $(SERVERMAIN)
@echo "Build server done."
Expand Down
15 changes: 11 additions & 4 deletions app/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ import (
)

var (
log = common.ZenonLogger.New()
app = cli.NewApp()
log = common.ZenonLogger.New()
app = cli.NewApp()
nodeManager *Manager
)

func Run() {
Expand All @@ -27,6 +28,12 @@ func Run() {
}
}

func Stop() {
err := nodeManager.Stop()
common.DealWithErr(err)
fmt.Println("znnd successfully stopped")
}

func init() {
app.Name = filepath.Base(os.Args[0])
app.HideVersion = false
Expand Down Expand Up @@ -71,8 +78,8 @@ func action(ctx *cli.Context) error {
if args := ctx.Args(); len(args) > 0 {
return fmt.Errorf("invalid command: %q", args[0])
}

nodeManager, err := NewNodeManager(ctx)
var err error
nodeManager, err = NewNodeManager(ctx)
if err != nil {
return err
}
Expand Down
7 changes: 5 additions & 2 deletions app/manager.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
//go:build !libznn
// +build !libznn

package app

import (
Expand Down Expand Up @@ -49,9 +52,9 @@ func (nodeManager *Manager) Start() error {
fmt.Println("*** Node status ***")
address := nodeManager.node.Zenon().Producer().GetCoinBase()
if address == nil {
fmt.Println("* No pillar configured for current node")
fmt.Println("* No Pillar configured for current node")
} else {
fmt.Printf("* Pillar detected! Producing address %v\n", address)
fmt.Printf("* Producer address detected: %v\n", address)
}
}

Expand Down
72 changes: 72 additions & 0 deletions app/manager_libznn.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
//go:build libznn
// +build libznn

package app

import (
"fmt"
"os"

"gopkg.in/urfave/cli.v1"

"github.com/zenon-network/go-zenon/node"
)

type Manager struct {
ctx *cli.Context
node *node.Node
}

func NewNodeManager(ctx *cli.Context) (*Manager, error) {
// make config
nodeConfig, err := MakeConfig(ctx)
if err != nil {
return nil, err
}

// make node
newNode, err := node.NewNode(nodeConfig)

if err != nil {
log.Error("failed to create the node", "reason", err)
return nil, err
}

return &Manager{
ctx: ctx,
node: newNode,
}, nil
}

func (nodeManager *Manager) Start() error {
// Start up the node
log.Info("starting znnd")
if err := nodeManager.node.Start(); err != nil {
fmt.Printf("failed to start node; reason:%v\n", err)
log.Crit("failed to start node", "reason", err)
os.Exit(1)
} else {
fmt.Println("znnd successfully started")
fmt.Println("*** Node status ***")
address := nodeManager.node.Zenon().Producer().GetCoinBase()
if address == nil {
fmt.Println("* No Pillar configured for current node")
} else {
fmt.Printf("* Producer address detected: %v\n", address)
}
}

return nil
}
func (nodeManager *Manager) Stop() error {
log.Warn("Stopping znnd ...")

if err := nodeManager.node.Stop(); err != nil {
log.Error("Failed to stop node", "reason", err)
}

// Waiting for node to close
nodeManager.node.Wait()

return nil
}
83 changes: 0 additions & 83 deletions chain/genesis/genesis_file_test.go

This file was deleted.

4 changes: 2 additions & 2 deletions chain/momentum/embedded.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/zenon-network/go-zenon/vm/embedded/definition"
)

func (ms *momentumStore) getActivePillars() ([]*definition.PillarInfo, error) {
func (ms *momentumStore) GetActivePillars() ([]*definition.PillarInfo, error) {
sd, err := ms.getEmbeddedStore(types.PillarContract)
if err != nil {
return nil, fmt.Errorf("getEmbeddedStore failed: %w", err)
Expand Down Expand Up @@ -64,7 +64,7 @@ func (ms *momentumStore) ComputePillarDelegations() ([]*types.PillarDelegationDe
}

// query register info
registerList, _ := ms.getActivePillars()
registerList, _ := ms.GetActivePillars()
pillarDelegationDetails := make([]*types.PillarDelegationDetail, 0, len(registerList))
for _, registration := range registerList {
pillarDelegationDetails = append(pillarDelegationDetails, &types.PillarDelegationDetail{
Expand Down
1 change: 1 addition & 0 deletions chain/store/momentum.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ type Momentum interface {
// Embedded

GetAllDefinedSporks() ([]*definition.Spork, error)
GetActivePillars() ([]*definition.PillarInfo, error)
IsSporkActive(*types.ImplementedSpork) (bool, error)
GetStakeBeneficialAmount(addr types.Address) (*big.Int, error)
GetTokenInfoByTs(ts types.ZenonTokenStandard) (*definition.TokenInfo, error)
Expand Down
20 changes: 17 additions & 3 deletions common/db/leveldb.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package db

import (
"runtime"

"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/iterator"
"github.com/syndtr/goleveldb/leveldb/opt"
Expand All @@ -9,6 +11,17 @@ import (
"github.com/zenon-network/go-zenon/common"
)

func getConsensusOpenFilesCacheCapacity() int {
switch runtime.GOOS {
case "darwin":
return 20
case "windows":
return 200
default:
return 200
}
}

type LevelDBLikeRO interface {
Get(key []byte, ro *opt.ReadOptions) (value []byte, err error)
Has(key []byte, ro *opt.ReadOptions) (ret bool, err error)
Expand Down Expand Up @@ -86,8 +99,9 @@ func NewLevelDBWrapper(db *leveldb.DB) DB {
})
}

func NewLevelDB(dirname string) DB {
db, err := leveldb.OpenFile(dirname, nil)
func NewLevelDB(dirname string) (DB, *leveldb.DB) {
opts := &opt.Options{OpenFilesCacheCapacity: getConsensusOpenFilesCacheCapacity()}
db, err := leveldb.OpenFile(dirname, opts)
common.DealWithErr(err)
return NewLevelDBWrapper(db)
return NewLevelDBWrapper(db), db
}
16 changes: 15 additions & 1 deletion common/db/versioned_db.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package db

import (
"runtime"
"sync"

lru "github.com/hashicorp/golang-lru"
"github.com/pkg/errors"
"github.com/syndtr/goleveldb/leveldb"
"github.com/syndtr/goleveldb/leveldb/opt"

"github.com/zenon-network/go-zenon/common"
"github.com/zenon-network/go-zenon/common/types"
Expand All @@ -30,6 +32,17 @@ func absDiff(x, y uint64) uint64 {
return x - y
}

func getOpenFilesCacheCapacity() int {
switch runtime.GOOS {
case "darwin":
return 100
case "windows":
return 200
default:
return 200
}
}

type Manager interface {
Frontier() DB
Get(types.HashHeight) DB
Expand Down Expand Up @@ -181,7 +194,8 @@ type ldbManager struct {
}

func NewLevelDBManager(dir string) Manager {
ldb, err := leveldb.OpenFile(dir, nil)
opts := &opt.Options{OpenFilesCacheCapacity: getOpenFilesCacheCapacity()}
ldb, err := leveldb.OpenFile(dir, opts)
common.DealWithErr(err)
l1Cache, err := lru.New(l1CacheSize)
common.DealWithErr(err)
Expand Down
2 changes: 1 addition & 1 deletion common/types/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ var (
AcceleratorContract = parseEmbedded("z1qxemdeddedxaccelerat0rxxxxxxxxxxp4tk22")

EmbeddedContracts = []Address{PlasmaContract, PillarContract, TokenContract, SentinelContract, SwapContract, StakeContract, SporkContract, LiquidityContract, AcceleratorContract}
EmbeddedWUpdate = []Address{PillarContract, StakeContract, SentinelContract, LiquidityContract}
EmbeddedWUpdate = []Address{PillarContract, StakeContract, SentinelContract, LiquidityContract, AcceleratorContract}

SporkAddress *Address
)
Expand Down
5 changes: 4 additions & 1 deletion common/types/spork.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package types

var (
ImplementedSporksMap = map[Hash]bool{}
AcceleratorSpork = NewImplementedSpork("97f0a9636a5cc633dfa3814e431f19c1974536eef3d1ebb713db50464dc5e750")
ImplementedSporksMap = map[Hash]bool{
AcceleratorSpork.SporkId: true,
}
)

type ImplementedSpork struct {
Expand Down
4 changes: 2 additions & 2 deletions consensus/consensus.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@ func (cs *consensus) Start() error {

// enable
if cs.testing == false {
cs.wg.Add(1)
go func() {
defer common.RecoverStack()
cs.wg.Add(1)
defer cs.wg.Done()
cs.work()
cs.wg.Done()
}()
}

Expand Down
Loading

0 comments on commit b2e6a98

Please sign in to comment.