Skip to content
Open
Show file tree
Hide file tree
Changes from 73 commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
ee9fbe1
New feature 25 "Deterministic Finality and Ride V9" added.
alexeykiselev Sep 22, 2025
547e9da
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Sep 24, 2025
bb070a1
Added bls signature methods (#1812)
esuwu Sep 29, 2025
59507b9
Added block finality schemas (#1833)
esuwu Sep 29, 2025
95c9e0f
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Sep 30, 2025
c01d622
Ride version 9 added. (#1761)
alexeykiselev Sep 30, 2025
7273f85
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Sep 30, 2025
29fdea9
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 6, 2025
f33a9d2
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 10, 2025
4bf39f1
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 10, 2025
bb7402c
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 15, 2025
72ac0fe
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 15, 2025
c5d3bd5
Protobuf schemas updated to support CommitToGeneration transaction sn…
alexeykiselev Oct 15, 2025
af84eee
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Oct 29, 2025
f201259
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 1, 2025
5ace672
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 5, 2025
6997f12
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 6, 2025
b815c4e
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 18, 2025
46dba65
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 20, 2025
0ee716d
Protobuf schemas submodule updated to the latest commit.
alexeykiselev Nov 21, 2025
b5ccda4
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Nov 25, 2025
68ff378
Restore -exclude-generated flag for gosec.
alexeykiselev Nov 25, 2025
c60d6cf
Merged from master
esuwu Dec 4, 2025
9526746
Merged from master
esuwu Dec 4, 2025
dc5359b
Returned exclude generated
esuwu Dec 4, 2025
999363d
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 5, 2025
caae0de
Merge branch 'master' into determenistic-finality-feature
nickeskov Dec 9, 2025
ecf096f
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 10, 2025
7b47f39
Protobuf code regenerated.
alexeykiselev Dec 10, 2025
a4c2fb9
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 11, 2025
d4f42cf
Protobuf schemas updated and code regenerated.
alexeykiselev Dec 15, 2025
6149756
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 15, 2025
099db31
Merge branch 'master' into determenistic-finality-feature
nickeskov Dec 15, 2025
1463fa0
Add commit to generation transaction (#1841)
alexeykiselev Dec 16, 2025
8d9c3fd
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 16, 2025
87af3f3
Add generation balance validation (#1938)
alexeykiselev Dec 16, 2025
6c8360e
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 17, 2025
9320382
Fix semgrep issues (#1946)
alexeykiselev Dec 17, 2025
56620d6
Fix generation commitment atomic snapshot JSON representation. (#1949)
nickeskov Dec 18, 2025
8377e30
Fix generation commitment atomic atomic snapshot from protobuf (#1950)
nickeskov Dec 18, 2025
f814f38
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 18, 2025
7284746
Add commit to generation transaction to ride v9 (#1953)
alexeykiselev Dec 29, 2025
a11e5aa
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Dec 29, 2025
ee8babd
Fix gosec issues. Original errors wrapped.
alexeykiselev Dec 29, 2025
3f4519f
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Jan 19, 2026
dbf124b
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Jan 19, 2026
5f2e490
Backport missing LibV9 switch branches from PR #1957. (#1967)
alexeykiselev Jan 26, 2026
eae7196
Scala-compatible way of BLS keys generation added. (#1971)
alexeykiselev Jan 27, 2026
4b5b1b7
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Feb 5, 2026
bf284d7
P-256 signature verification with Ride V9 (#1957)
nickeskov Feb 9, 2026
62bedbe
Go version updated to 1.25. (#1985)
alexeykiselev Feb 10, 2026
f1fafa1
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Feb 14, 2026
4881ec9
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Feb 16, 2026
1396934
Complexities of SHA256 functions updated for RideV9. (#1990)
alexeykiselev Feb 16, 2026
ec904d4
Support Finality and Block Endorsements (#1852)
esuwu Feb 17, 2026
b8f32c6
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Feb 19, 2026
705cc5c
Added the lower bound finalization calculation, even if finalization …
esuwu Feb 20, 2026
22dd0f3
Cleared endorsement pool caches for rollbacks
esuwu Feb 20, 2026
0f99416
Broken linter directive removed.
alexeykiselev Feb 24, 2026
6249ae7
Signing a CommitToGeneration transaction using API without providing …
alexeykiselev Feb 25, 2026
a3be1f3
Added function to combine FinalizationVoting structures. (#2012)
alexeykiselev Feb 27, 2026
4a192c9
Finality forks fix (#2013)
esuwu Feb 27, 2026
528c99b
Modify Ride function SecP256Verify so it accepts message and calculat…
alexeykiselev Feb 27, 2026
44b3b37
Fix bug with 'resetDeposits' method: newest method should be used.
nickeskov Mar 6, 2026
41e821c
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 10, 2026
78a9e73
Update circl to v1.6.3. Update exp to latest version.
alexeykiselev Mar 10, 2026
bd950d0
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 12, 2026
f6f472b
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 19, 2026
b597986
Fix bug with EOF error in 'prepareFinalizationVerification'.
nickeskov Mar 23, 2026
ccc7487
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 24, 2026
a9d019b
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 25, 2026
33c9773
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 26, 2026
e1a3964
Added delayed finalization (#2017)
esuwu Mar 26, 2026
224a6bf
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 27, 2026
522fe19
New event BlockEndorsementEvent added to all states. (#2045)
alexeykiselev Mar 29, 2026
4f5342c
Utility to create CommitToGeneration transactions added. (#2044)
alexeykiselev Mar 31, 2026
6f6bc8b
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Mar 31, 2026
4545807
Merge branch 'master' into determenistic-finality-feature
nickeskov Apr 6, 2026
83ec0e7
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 9, 2026
b3afef4
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 13, 2026
aeef4e4
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 13, 2026
bf64777
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 15, 2026
fea0c10
Generators set (#2055)
alexeykiselev Apr 16, 2026
6517b06
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 16, 2026
a9ae9e4
Add simple finality itest (#2063)
alexeykiselev Apr 17, 2026
1f4ed8c
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 23, 2026
e817462
Merge branch 'master' into determenistic-finality-feature
alexeykiselev Apr 27, 2026
51fb009
Merge branch 'master' into determenistic-finality-feature
alexeykiselev May 5, 2026
70fee0d
Constants extracted.
alexeykiselev May 5, 2026
eda0f46
Merge branch 'master' into determenistic-finality-feature
alexeykiselev May 5, 2026
794d552
Merge branch 'master' into determenistic-finality-feature
alexeykiselev May 14, 2026
2aabee0
Merge branch 'master' into determenistic-finality-feature
alexeykiselev May 21, 2026
cef01e9
Merge branch 'master' into determenistic-finality-feature
alexeykiselev May 22, 2026
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
11 changes: 9 additions & 2 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,19 @@ jobs:
with:
version: latest
args: -c .golangci.yml

# Strict linter configuration, only checking new code from pull requests.
- name: golangci-lint-strict
run: golangci-lint run -c .golangci-strict.yml --new-from-rev=origin/master

# Check for modern Go code patterns
- name: modernize check
run: go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@v0.20.0 ./...
- name: Run modernize
shell: bash
run: |
set +o pipefail
go run golang.org/x/tools/go/analysis/passes/modernize/cmd/modernize@latest ./... 2>&1 | \
grep -vE '\.(pb|gen)\.go|mock|_string.go|^exit status|^go: downloading' | \
{ output=$(cat); [ -n "$output" ] && { echo "$output"; exit 1; } || exit 0; }

build:
name: ubuntu
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ jobs:
uses: securego/gosec@223e19b8856e00f02cc67804499a83f77e208f3c # v2.25.0
with:
# with '-no-fail' we let the report trigger content trigger a failure using the GitHub Security features.
args: "-no-fail -fmt sarif -out gosec.sarif ./..."
args: "-no-fail -exclude-generated -fmt sarif -out gosec.sarif ./..."
- name: Transform gosec SARIF to meet SARIF 2.1.0 schema requirements
# Produces SARIF file has two incompatibilities with SARIF 2.1.0 schema all of them are in `fixes` object:
# 1. Field `description` contains only `markdown` property, but `text` property is mandatory.
# 2. Property `artifactChanges` must be non-empty array with valid `artifactChange` object.
# To fix those issues the first part of jq query copies content of `markdown` field into `text` field
# if it's not present. In the second part if the `fixes` object has null array as `artifactChanges` the empty
# valid `artifactChange` object inserted.
# After fix of mentioned gosec issues this step can be removed.
# After fix of mentioned gosec issues this step can be removed.
run: |
set -e
jq 'walk(if type=="object" and has("markdown") and (.text == null or .text == "") then .text = .markdown else . end) | (.runs[].results[]? .fixes[]? .artifactChanges) |= (if . == null then [{"artifactLocation": { "uri": "" }, "replacements": [{"deletedRegion": {"byteOffset": 0, "byteLength": 0 }}]}] else . end)' gosec.sarif > gosec_fixed.sarif
Expand Down
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[submodule "pkg/grpc/protobuf-schemas"]
path = pkg/grpc/protobuf-schemas
url = https://github.com/wavesplatform/protobuf-schemas
branch = deterministic-finality
4 changes: 4 additions & 0 deletions .golangci-strict.yml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@ linters:
- github.com/jmoiron/sqlx
usetesting:
os-setenv: true
revive:
rules:
- name: var-naming
disable: true
exclusions:
generated: lax
presets:
Expand Down
5 changes: 5 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
version: "2"
linters:
enable:
- exhaustive
settings:
cyclop:
max-complexity: 30
package-average: 10
errcheck:
check-type-assertions: false
exhaustive:
check:
- switch
exhaustruct:
exclude:
- ^net/http.Client$
Expand Down
3 changes: 3 additions & 0 deletions .semgrepignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ cmd/wmd/internal/swagger/

# Ignore testdata folders
pkg/state/testdata/

# Ignore generated files
**/*.pb.go
Comment thread Dismissed
13 changes: 10 additions & 3 deletions cmd/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import (
"github.com/wavesplatform/gowaves/pkg/logging"
"github.com/wavesplatform/gowaves/pkg/metrics"
"github.com/wavesplatform/gowaves/pkg/miner"
"github.com/wavesplatform/gowaves/pkg/miner/endorsementpool"
"github.com/wavesplatform/gowaves/pkg/miner/scheduler"
"github.com/wavesplatform/gowaves/pkg/miner/utxpool"
"github.com/wavesplatform/gowaves/pkg/node"
Expand Down Expand Up @@ -467,7 +468,7 @@ func runNode(ctx context.Context, nc *config) (_ io.Closer, retErr error) {
return nil, errors.Wrap(err, "failed to create services")
}

app, err := api.NewApp(nc.apiKey, minerScheduler, svs)
app, err := api.NewApp(nc.apiKey, minerScheduler, svs, cfg)
if err != nil {
return nil, errors.Wrap(err, "failed to initialize application")
}
Expand All @@ -480,7 +481,7 @@ func runNode(ctx context.Context, nc *config) (_ io.Closer, retErr error) {
return nil, errors.Wrap(apiErr, "failed to run APIs")
}

return startNode(ctx, nc, svs, features, minerScheduler, parent, declAddr, nl), nil
return startNode(ctx, nc, svs, features, minerScheduler, parent, declAddr, nl, cfg.GenerationPeriod), nil
}

func startNode(
Expand All @@ -492,6 +493,7 @@ func startNode(
parent peer.Parent,
declAddr proto.TCPAddr,
nl *slog.Logger,
periodGeneration uint64,
) *node.Node {
bindAddr := proto.NewTCPAddrFromString(nc.bindAddress)

Expand All @@ -504,7 +506,7 @@ func startNode(
go ntw.Run(ctx)

n := node.NewNode(svs, declAddr, bindAddr, nc.microblockInterval, nc.enableLightMode, nl, fl)
go n.Run(ctx, parent, svs.InternalChannel, networkInfoCh, ntw.SyncPeer())
go n.Run(ctx, parent, svs.InternalChannel, networkInfoCh, ntw.SyncPeer(), periodGeneration)
return n
}

Expand Down Expand Up @@ -808,12 +810,17 @@ func createServices(
if err != nil {
return services.Services{}, errors.Wrap(err, "failed to initialize UTX")
}
endorsementsPool, err := endorsementpool.NewEndorsementPool(cfg.MaxEndorsements)
if err != nil {
return services.Services{}, errors.Wrap(err, "failed to initialize endorsement pool")
}
return services.Services{
State: st,
Peers: peerManager,
Scheduler: scheduler,
BlocksApplier: blocks_applier.NewBlocksApplier(),
UtxPool: utxpool.New(utxPoolMaxSizeBytes, utxValidator, cfg),
EndorsementPool: endorsementsPool,
Scheme: cfg.AddressSchemeCharacter,
Time: ntpTime,
Wallet: wal,
Expand Down
2 changes: 1 addition & 1 deletion cmd/rollback/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func run() error {

slog.Info("Current height", "height", curHeight)

err = s.RollbackToHeight(*height)
err = s.RollbackToHeight(*height, false)
if err != nil {
return fmt.Errorf("failed to rollback: %w", err)
}
Expand Down
30 changes: 16 additions & 14 deletions cmd/statecmp/statecmp.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/pkg/errors"

"github.com/wavesplatform/gowaves/pkg/client"
"github.com/wavesplatform/gowaves/pkg/crypto"
"github.com/wavesplatform/gowaves/pkg/logging"
"github.com/wavesplatform/gowaves/pkg/proto"
)
Expand Down Expand Up @@ -43,10 +44,10 @@ func checkAndUpdateURL(s string) (string, error) {
return u.String(), nil
}

func loadStateHash(ctx context.Context, cl *client.Client, height uint64, tries int) (*proto.StateHash, error) {
func loadStateHash(ctx context.Context, cl *client.Client, height uint64, tries int) (proto.StateHash, error) {
ctx, cancel := context.WithTimeout(ctx, 60*time.Second)
defer cancel()
var sh *proto.StateHash
var sh proto.StateHash
var err error
for range tries {
sh, _, err = cl.Debug.StateHash(ctx, height)
Expand All @@ -61,12 +62,12 @@ type printer struct {
lock sync.Mutex
}

func (p *printer) printDifferentResults(height uint64, res map[proto.FieldsHashes]*nodesGroup) {
func (p *printer) printDifferentResults(height uint64, res map[crypto.Digest]*nodesGroup) {
p.lock.Lock()
defer p.lock.Unlock()

for fh, nodes := range res {
hashJs, err := json.Marshal(fh)
for sh, nodes := range res {
hashJs, err := json.Marshal(sh)
if err != nil {
panic(err)
}
Expand All @@ -76,7 +77,7 @@ func (p *printer) printDifferentResults(height uint64, res map[proto.FieldsHashe
}

type stateHashInfo struct {
hash *proto.StateHash
sh proto.StateHash
node string
}

Expand All @@ -87,12 +88,13 @@ type hashResult struct {

type nodesGroup struct {
nodes []string
sh proto.StateHash
}

func newNodesGroup(first string) *nodesGroup {
func newNodesGroup(first string, sh proto.StateHash) *nodesGroup {
nodes := make([]string, 1)
nodes[0] = first
return &nodesGroup{nodes: nodes}
return &nodesGroup{nodes: nodes, sh: sh}
}

func (ng *nodesGroup) addNode(node string) {
Expand All @@ -112,27 +114,27 @@ func manageHeight(
sh, err := loadStateHash(ctx, cl, height, tries)
res := hashResult{
res: stateHashInfo{
hash: sh,
sh: sh,
node: node,
},
err: err,
}
results <- res
}(cl, node)
}
differentResults := make(map[proto.FieldsHashes]*nodesGroup)
differentResults := make(map[crypto.Digest]*nodesGroup)
for range clients {
hr := <-results
if hr.err != nil {
cancel()
return hr.err
}
fh := hr.res.hash.FieldsHashes
nodesGroup, ok := differentResults[fh]
sh := hr.res.sh
ng, ok := differentResults[sh.GetSumHash()]
if !ok {
differentResults[fh] = newNodesGroup(hr.res.node)
differentResults[sh.GetSumHash()] = newNodesGroup(hr.res.node, sh)
} else {
nodesGroup.addNode(hr.res.node)
ng.addNode(hr.res.node)
}
}
if len(differentResults) != 1 {
Expand Down
34 changes: 21 additions & 13 deletions cmd/statehash/statehash.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ func findLastEqualStateHashes(
) (uint64, error) {
var err error
var r uint64
var lsh, rsh *proto.StateHashDebug
var lsh, rsh proto.StateHashDebug
var start uint64 = 1
for start <= stop {
middle := (start + stop) / 2
Expand All @@ -279,7 +279,7 @@ func findLastEqualStateHashes(
return r, nil
}

func stateHashToString(sh *proto.StateHashDebug) string {
func stateHashToString(sh proto.StateHashDebug) string {
js, err := json.Marshal(sh)
if err != nil {
slog.Error("Failed to render state hash to text", logging.Error(err))
Expand All @@ -288,24 +288,25 @@ func stateHashToString(sh *proto.StateHashDebug) string {
return string(js)
}

func compareStateHashes(sh1, sh2 *proto.StateHashDebug, onlyLegacy bool) (bool, error) {
if sh1.BlockID != sh2.BlockID {
return false, fmt.Errorf("different block IDs: '%s' != '%s'", sh1.BlockID.String(), sh2.BlockID.String())
func compareStateHashes(sh1, sh2 proto.StateHashDebug, onlyLegacy bool) (bool, error) {
if sh1.GetBlockID() != sh2.GetBlockID() {
return false, fmt.Errorf("different block IDs: '%s' != '%s'",
sh1.GetBlockID().String(), sh2.GetBlockID().String())
}
legacyEqual := sh1.SumHash == sh2.SumHash
legacyEqual := sh1.GetSumHash() == sh2.GetSumHash()
if onlyLegacy {
return legacyEqual, nil
}
return legacyEqual && sh1.SnapshotHash == sh2.SnapshotHash, nil
return legacyEqual && sh1.GetSnapshotHash() == sh2.GetSnapshotHash(), nil
}

func compareWithRemote(
ctx context.Context,
sh *proto.StateHashDebug,
sh proto.StateHashDebug,
c *client.Client,
h uint64,
onlyLegacy bool,
) (bool, *proto.StateHashDebug, error) {
) (bool, proto.StateHashDebug, error) {
rsh, err := getRemoteStateHash(ctx, c, h)
if err != nil {
return false, nil, err
Expand All @@ -314,15 +315,15 @@ func compareWithRemote(
return ok, rsh, err
}

func getRemoteStateHash(ctx context.Context, c *client.Client, h uint64) (*proto.StateHashDebug, error) {
func getRemoteStateHash(ctx context.Context, c *client.Client, h uint64) (proto.StateHashDebug, error) {
sh, _, err := c.Debug.StateHashDebug(ctx, h)
if err != nil {
return nil, fmt.Errorf("failed to get state hash at %d height: %w", h, err)
}
return sh, nil
}

func getLocalStateHash(st state.StateInfo, h uint64) (*proto.StateHashDebug, error) {
func getLocalStateHash(st state.StateInfo, h uint64) (proto.StateHashDebug, error) {
const localVersion = "local"
lsh, err := st.LegacyStateHashAtHeight(h)
if err != nil {
Expand All @@ -332,8 +333,15 @@ func getLocalStateHash(st state.StateInfo, h uint64) (*proto.StateHashDebug, err
if err != nil {
return nil, fmt.Errorf("failed to get snapshot state hash at %d height: %w", h, err)
}
shd := proto.NewStateHashJSDebug(*lsh, h, localVersion, snapSH)
return &shd, nil
finalityActivated, err := st.IsActiveAtHeight(int16(settings.DeterministicFinality), h)
if err != nil {
return nil, fmt.Errorf("failed to determine finality activation at %d height: %w", h, err)
}
bh, bhErr := st.BlockByHeight(h)
if bhErr != nil {
return nil, fmt.Errorf("failed to get block at %d height: %w", h, bhErr)
}
return proto.NewStateHashDebug(finalityActivated, lsh, h, localVersion, snapSH, bh.BaseTarget)
}

func showUsage() {
Expand Down
10 changes: 5 additions & 5 deletions cmd/wallet/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -449,11 +449,11 @@ func createWallet(
return errors.Wrap(err, "failed to write the wallet's data to the wallet")

}
fmt.Printf("New account has been added to wallet successfully %s\n", walletPath) //nolint:forbidigo // As intended
fmt.Printf("Account Seed: %s\n", walletCredentials.accountSeed.String())
fmt.Printf("Public Key: %s\n", walletCredentials.pk.String())
fmt.Printf("Secret Key: %s\n", walletCredentials.sk.String())
fmt.Printf("Address: %s\n", walletCredentials.address.String())
fmt.Fprintf(os.Stdout, "New account has been added to wallet successfully %s\n", walletPath)
fmt.Fprintf(os.Stdout, "Account Seed: %s\n", walletCredentials.accountSeed.String())
fmt.Fprintf(os.Stdout, "Public Key: %s\n", walletCredentials.pk.String())
fmt.Fprintf(os.Stdout, "Secret Key: %s\n", walletCredentials.sk.String())
fmt.Fprintf(os.Stdout, "Address: %s\n", walletCredentials.address.String())
return nil
}

Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ require (
github.com/ccoveille/go-safecast/v2 v2.0.0
github.com/cenkalti/backoff/v4 v4.3.0
github.com/cespare/xxhash/v2 v2.3.0
github.com/cloudflare/circl v1.6.3
github.com/consensys/gnark v0.14.0
github.com/consensys/gnark-crypto v0.19.2
github.com/coocood/freecache v1.2.7
Expand Down Expand Up @@ -50,7 +51,7 @@ require (
go.uber.org/atomic v1.11.0
go.uber.org/goleak v1.3.0
golang.org/x/crypto v0.49.0
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa
golang.org/x/sync v0.20.0
golang.org/x/sys v0.42.0
google.golang.org/grpc v1.79.3
Expand Down
6 changes: 4 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
github.com/consensys/gnark v0.14.0 h1:RG+8WxRanFSFBSlmCDRJnYMYYKpH3Ncs5SMzg24B5HQ=
github.com/consensys/gnark v0.14.0/go.mod h1:1IBpDPB/Rdyh55bQRR4b0z1WvfHQN1e0020jCvKP2Gk=
Expand Down Expand Up @@ -358,8 +360,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0=
golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
Expand Down
Loading
Loading