Skip to content
Closed

SAE PoC #4504

Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
wip strevm poc
  • Loading branch information
StephenButtolph committed Jun 9, 2025
commit c1b592ed67a256945f201e4b5c6c0697d2006741
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ require (
require (
github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/VictoriaMetrics/fastcache v1.12.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.10.0 // indirect
Expand Down
9 changes: 9 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUq
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc=
github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U=
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
Expand Down Expand Up @@ -200,6 +202,8 @@ github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA=
github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
Expand Down Expand Up @@ -248,13 +252,18 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4
github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo=
github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
Expand Down
1 change: 1 addition & 0 deletions utils/constants/vm_ids.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ var (
EVMID = ids.ID{'e', 'v', 'm'}
SubnetEVMID = ids.ID{'s', 'u', 'b', 'n', 'e', 't', 'e', 'v', 'm'}
XSVMID = ids.ID{'x', 's', 'v', 'm'}
StrEVMID = ids.ID{'s', 't', 'r', 'e', 'v', 'm'}
)

// VMName returns the name of the VM with the provided ID. If a human readable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func main() {
key := genesis.EWOQKey
uri := primary.LocalAPIURI
kc := secp256k1fx.NewKeychain(key)
subnetIDStr := "29uVeLPJB1eQJkzRemU8g8wZDw5uJRqpab5U2mX9euieVwiEbL"
subnetIDStr := "BKBZ6xXTnT86B4L5fp8rvtcmNSpvtNz8En9jG61ywV2uWyeHy"
startTime := time.Now().Add(time.Minute)
duration := 2 * 7 * 24 * time.Hour // 2 weeks
weight := units.Schmeckle
Expand Down
41 changes: 24 additions & 17 deletions wallet/subnet/primary/examples/create-chain/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,51 @@ package main

import (
"context"
"encoding/json"
"log"
"math"
"math/big"
"time"

"github.com/ava-labs/avalanchego/genesis"
"github.com/ava-labs/avalanchego/ids"
"github.com/ava-labs/avalanchego/utils/constants"
"github.com/ava-labs/avalanchego/vms/secp256k1fx"
"github.com/ava-labs/avalanchego/wallet/subnet/primary"

xsgenesis "github.com/ava-labs/avalanchego/vms/example/xsvm/genesis"
"github.com/ava-labs/coreth/core"
"github.com/ava-labs/coreth/core/types"
"github.com/ava-labs/coreth/params"
"github.com/ethereum/go-ethereum/crypto"
"github.com/holiman/uint256"
)

func main() {
key := genesis.EWOQKey
uri := primary.LocalAPIURI
kc := secp256k1fx.NewKeychain(key)
subnetIDStr := "29uVeLPJB1eQJkzRemU8g8wZDw5uJRqpab5U2mX9euieVwiEbL"
genesis := &xsgenesis.Genesis{
Timestamp: time.Now().Unix(),
Allocations: []xsgenesis.Allocation{
{
Address: genesis.EWOQKey.Address(),
Balance: math.MaxUint64,
subnetIDStr := "BKBZ6xXTnT86B4L5fp8rvtcmNSpvtNz8En9jG61ywV2uWyeHy"

eoa := crypto.PubkeyToAddress(*key.PublicKey().ToECDSA())
genesis := &core.Genesis{
Config: params.TestChainConfig,
Timestamp: 1749420951,
Difficulty: big.NewInt(0), // required by geth
Alloc: types.GenesisAlloc{
eoa: {
Balance: new(uint256.Int).Not(uint256.NewInt(0)).ToBig(),
},
},
}
vmID := constants.XSVMID
name := "let there"

subnetID, err := ids.FromString(subnetIDStr)
genesisBytes, err := json.Marshal(genesis)
if err != nil {
log.Fatalf("failed to parse subnet ID: %s\n", err)
log.Fatalf("failed to marshal genesis: %s\n", err)
}

genesisBytes, err := xsgenesis.Codec.Marshal(xsgenesis.CodecVersion, genesis)
vmID := constants.StrEVMID
name := "gofast"

subnetID, err := ids.FromString(subnetIDStr)
if err != nil {
log.Fatalf("failed to create genesis bytes: %s\n", err)
log.Fatalf("failed to parse subnet ID: %s\n", err)
}

ctx := context.Background()
Expand Down
100 changes: 100 additions & 0 deletions wallet/subnet/primary/examples/spam-evm/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
// Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.

package main

import (
"context"
"errors"
"log"
"math/big"
"time"

"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/params"

"github.com/ava-labs/avalanchego/genesis"
"github.com/ava-labs/avalanchego/wallet/subnet/primary"
)

const (
// maxFeePerGas is the maximum fee that transactions issued by this test
// will be willing to pay. The actual value doesn't really matter, it
// just needs to be higher than the `targetGasPrice` calculated below.
maxFeePerGas = 1000 * params.GWei
// minFeePerGas is the minimum fee that transactions issued by this test
// will pay. The mempool enforces that this value is non-zero.
minFeePerGas = 1 * params.Wei
)

var (
gasFeeCap = big.NewInt(maxFeePerGas)
gasTipCap = big.NewInt(minFeePerGas)
)

func main() {
ctx := context.Background()
const (
chainUUID = "ou89q1D77mWa9ZhqbkhLvoPBNtbFzz4cDe5H4MUAHjbsY9bk6"
uri = primary.LocalAPIURI + "/ext/bc/" + chainUUID + "/sae/http"
)
c, err := ethclient.DialContext(ctx, uri)
if err != nil {
log.Fatal(err)
}

chainID, err := c.ChainID(ctx)
if err != nil {
log.Fatal(err)
}
signer := types.NewLondonSigner(chainID)

key := genesis.EWOQKey
ecdsaKey := key.ToECDSA()
eoa := crypto.PubkeyToAddress(ecdsaKey.PublicKey)
nonce, err := c.NonceAt(context.Background(), eoa, nil)
if err != nil {
log.Fatal(err)
}

for {
tx := types.NewTx(&types.DynamicFeeTx{
ChainID: chainID,
Nonce: nonce,
GasTipCap: gasTipCap,
GasFeeCap: gasFeeCap,
Gas: 1_000_000, // params.TxGas,
To: &eoa,
})

tx, err = types.SignTx(tx, signer, ecdsaKey)
if err != nil {
log.Fatal(err)
}

txHash := tx.Hash()
log.Printf("sending tx %s with nonce %d\n", txHash, nonce)

err = c.SendTransaction(ctx, tx)
if err != nil {
log.Fatal(err)
}

for {
_, err = c.TransactionReceipt(ctx, txHash)
if err == nil {
break // Transaction was confirmed
}
if !errors.Is(err, ethereum.NotFound) {
log.Fatal(err) // Unexpected error
}

time.Sleep(100 * time.Millisecond)
}

nonce++
}
}