Set up genesis for public testnet

This commit is contained in:
StephenButtolph 2020-03-31 02:54:12 -04:00
parent d63375e83a
commit cda5c95d56
8 changed files with 43 additions and 127 deletions

View File

@ -71,25 +71,35 @@ var (
BorealisName: BorealisID,
LocalName: LocalID,
}
Keys = []string{
"ewoqjP7PxY4yr3iLTpLisriqt94hdyDFNgchSxGGztUrTXtNN",
MintAddresses = []string{
"95YUFjhDG892VePMzpwKF9JzewGKvGRi3",
}
Addresses = []string{
"6Y3kysjF9jnHnYkdS9yGAuoHyae2eNmeV",
FundedAddresses = []string{
"9uKvvA7E35QCwLvAaohXTCfFejbf3Rv17",
"JLrYNMYXANGj43BfWXBxMMAEenUBp1Sbn",
"7TUTzwrU6nbZtWHjTHEpdneUvjKBxb3EM",
"77mPUXBdQKwQpPoX6rckCZGLGGdkuG1G6",
"4gGWdFZ4Gax1B466YKXyKRRpWLb42Afdt",
"CKTkzAPsRxCreyiDTnjGxLmjMarxF28fi",
"4ABm9gFHVtsNdcKSd1xsacFkGneSgzpaa",
"DpL8PTsrjtLzv5J8LL3D2A6YcnCTqrNH9",
"ZdhZv6oZrmXLyFDy6ovXAu6VxmbTsT2h",
"6cesTteH62Y5mLoDBUASaBvCXuL2AthL",
}
ParsedAddresses = []ids.ShortID{}
StakerIDs = []string{
"7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg",
"MFrZFVCXPv5iCn6M9K6XduxGTYp891xXZ",
"NFBbbJ4qCmNaCzeW7sxErhvWqvEQMnYcN",
"GWPcbFJZFfZreETSoWjPimr846mXEKCtu",
"P7oB2McjBGgW2NXXWVYjV8JEDFoW9xDE5",
"NX4zVkuiRJZYe6Nzzav7GXN3TakUet3Co",
"CMsa8cMw4eib1Hb8GG4xiUKAq5eE1BwUX",
"DsMP6jLhi1MkDVc3qx9xx9AAZWx8e87Jd",
"N86eodVZja3GEyZJTo3DFUPGpxEEvjGHs",
"EkKeGSLUbHrrtuayBtbwgWDRUiAziC3ao",
}
ParsedStakerIDs = []ids.ShortID{}
)
func init() {
for _, addrStr := range Addresses {
for _, addrStr := range FundedAddresses {
addr, err := ids.ShortFromString(addrStr)
if err != nil {
panic(err)
@ -200,8 +210,12 @@ func Genesis(networkID uint32) ([]byte, error) {
// Specify the genesis state of the AVM
avmArgs := avm.BuildGenesisArgs{}
{
owners := []interface{}{avm.Owners{
Threshold: 1,
Minters: MintAddresses,
}}
holders := []interface{}(nil)
for _, addr := range Addresses {
for _, addr := range FundedAddresses {
holders = append(holders, avm.Holder{
Amount: json.Uint64(45 * units.MegaAva),
Address: addr,
@ -214,7 +228,8 @@ func Genesis(networkID uint32) ([]byte, error) {
Symbol: "AVA",
Denomination: 9,
InitialState: map[string][]interface{}{
"fixedCap": holders,
"variableCap": owners,
"fixedCap": holders,
},
},
}

View File

@ -8,11 +8,9 @@ import (
"github.com/ava-labs/salticidae-go"
"github.com/ava-labs/gecko/genesis"
"github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/networking"
"github.com/ava-labs/gecko/utils/crypto"
"github.com/ava-labs/gecko/utils/formatting"
"github.com/ava-labs/gecko/utils/timer"
"github.com/ava-labs/gecko/vms/avm"
"github.com/ava-labs/gecko/vms/platformvm"
@ -25,11 +23,8 @@ func (n *network) benchmarkAVM(chain *platformvm.CreateChainTx) {
wallet, err := avmwallet.NewWallet(n.log, n.networkID, chain.ID(), config.AvaTxFee)
n.log.AssertNoError(err)
cb58 := formatting.CB58{}
keyStr := genesis.Keys[config.Key]
n.log.AssertNoError(cb58.FromString(keyStr))
factory := crypto.FactorySECP256K1R{}
sk, err := factory.ToPrivateKey(cb58.Bytes)
sk, err := factory.ToPrivateKey(config.Key)
n.log.AssertNoError(err)
wallet.ImportKey(sk.(*crypto.PrivateKeySECP256K1R))

View File

@ -6,14 +6,9 @@ package avmwallet
import (
"testing"
"github.com/ava-labs/gecko/genesis"
"github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/snow"
"github.com/ava-labs/gecko/utils/crypto"
"github.com/ava-labs/gecko/utils/formatting"
"github.com/ava-labs/gecko/utils/logging"
"github.com/ava-labs/gecko/utils/units"
"github.com/ava-labs/gecko/vms/avm"
"github.com/ava-labs/gecko/vms/components/ava"
"github.com/ava-labs/gecko/vms/secp256k1fx"
)
@ -221,83 +216,3 @@ func TestWalletString(t *testing.T) {
t.Fatalf("got:\n%s\n\nexpected:\n%s", str, expected)
}
}
func TestWalletWithGenesis(t *testing.T) {
ctx := snow.DefaultContextTest()
ctx.NetworkID = 12345
ctx.ChainID = ids.NewID([32]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
w, err := NewWallet(logging.NoLog{}, ctx.NetworkID, ctx.ChainID, 0)
if err != nil {
t.Fatal(err)
}
b58 := formatting.CB58{}
factory := crypto.FactorySECP256K1R{}
for _, key := range genesis.Keys {
if err := b58.FromString(key); err != nil {
t.Fatal(err)
}
sk, err := factory.ToPrivateKey(b58.Bytes)
if err != nil {
t.Fatal(err)
}
w.ImportKey(sk.(*crypto.PrivateKeySECP256K1R))
}
avmChain := genesis.VMGenesis(ctx.NetworkID, avm.ID)
genesisBytes := avmChain.GenesisData
genesis := avm.Genesis{}
if err := w.codec.Unmarshal(genesisBytes, &genesis); err != nil {
t.Fatal(err)
}
genesisTx := genesis.Txs[0]
tx := avm.Tx{
UnsignedTx: &genesisTx.CreateAssetTx,
}
txBytes, err := w.codec.Marshal(&tx)
if err != nil {
t.Fatal(err)
}
tx.Initialize(txBytes)
for _, utxo := range tx.UTXOs() {
w.AddUTXO(utxo)
}
assetID := genesisTx.ID()
if balance := w.Balance(assetID); balance == 0 {
t.Fatalf("expected a positive balance")
}
for i := 1; i <= 1000; i++ {
addr, err := w.CreateAddress()
if err != nil {
t.Fatal(err)
}
tx, err := w.CreateTx(assetID, uint64(i), addr)
if err != nil {
t.Fatal(err)
}
if err := tx.SyntacticVerify(ctx, w.codec, 1); err != nil {
t.Fatal(err)
}
for _, utxoID := range tx.InputUTXOs() {
w.RemoveUTXO(utxoID.InputID())
}
for _, utxo := range tx.UTXOs() {
w.AddUTXO(utxo)
}
if balance := w.Balance(assetID); balance != 45*units.MegaAva {
t.Fatalf("balance of %d was expected but got %d", 45*units.MegaAva, balance)
}
}
}

View File

@ -23,8 +23,10 @@ type Config struct {
LoggingConfig logging.Config
// Key describes which key to use to issue transactions
Key []byte
// NumTxs describes the number of transactions to issue
// MaxOutstandingTxs describes how many txs to pipeline
Key, NumTxs, MaxOutstandingTxs int
Chain ChainType
NumTxs, MaxOutstandingTxs int
Chain ChainType
}

View File

@ -41,11 +41,6 @@ func main() {
crypto.EnableCrypto = config.EnableCrypto
net.decided = make(chan ids.ID, config.MaxOutstandingTxs)
if config.Key >= len(genesis.Keys) || config.Key < 0 {
log.Fatal("Unknown key specified")
return
}
// Init the network
log.AssertNoError(net.Initialize())

View File

@ -12,6 +12,7 @@ import (
"github.com/ava-labs/gecko/genesis"
"github.com/ava-labs/gecko/utils"
"github.com/ava-labs/gecko/utils/formatting"
"github.com/ava-labs/gecko/utils/logging"
"github.com/ava-labs/gecko/utils/wrappers"
)
@ -55,7 +56,7 @@ func init() {
spchain := fs.Bool("sp-chain", false, "Execute simple payment chain transactions")
spdag := fs.Bool("sp-dag", false, "Execute simple payment dag transactions")
avm := fs.Bool("avm", false, "Execute avm transactions")
fs.IntVar(&config.Key, "key", 0, "Index of the genesis key list to use")
key := fs.String("key", "", "Funded key in the genesis key to use to issue transactions")
fs.IntVar(&config.NumTxs, "num-txs", 25000, "Total number of transaction to issue")
fs.IntVar(&config.MaxOutstandingTxs, "max-outstanding", 1000, "Maximum number of transactions to leave outstanding")
@ -86,6 +87,10 @@ func init() {
Port: uint16(*port),
}
cb58 := formatting.CB58{}
errs.Add(cb58.FromString(*key))
config.Key = cb58.Bytes
// Logging:
if *logsDir != "" {
loggingConfig.Directory = *logsDir

View File

@ -8,11 +8,9 @@ import (
"github.com/ava-labs/salticidae-go"
"github.com/ava-labs/gecko/genesis"
"github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/networking"
"github.com/ava-labs/gecko/utils/crypto"
"github.com/ava-labs/gecko/utils/formatting"
"github.com/ava-labs/gecko/utils/timer"
"github.com/ava-labs/gecko/vms/platformvm"
"github.com/ava-labs/gecko/vms/spchainvm"
@ -28,15 +26,11 @@ func (n *network) benchmarkSPChain(chain *platformvm.CreateChainTx) {
accounts, err := codec.UnmarshalGenesis(genesisBytes)
n.log.AssertNoError(err)
cb58 := formatting.CB58{}
factory := crypto.FactorySECP256K1R{}
for _, keyStr := range genesis.Keys {
n.log.AssertNoError(cb58.FromString(keyStr))
skGen, err := factory.ToPrivateKey(cb58.Bytes)
n.log.AssertNoError(err)
sk := skGen.(*crypto.PrivateKeySECP256K1R)
wallet.ImportKey(sk)
}
skGen, err := factory.ToPrivateKey(config.Key)
n.log.AssertNoError(err)
sk := skGen.(*crypto.PrivateKeySECP256K1R)
wallet.ImportKey(sk)
for _, account := range accounts {
wallet.AddAccount(account)

View File

@ -8,11 +8,9 @@ import (
"github.com/ava-labs/salticidae-go"
"github.com/ava-labs/gecko/genesis"
"github.com/ava-labs/gecko/ids"
"github.com/ava-labs/gecko/networking"
"github.com/ava-labs/gecko/utils/crypto"
"github.com/ava-labs/gecko/utils/formatting"
"github.com/ava-labs/gecko/utils/timer"
"github.com/ava-labs/gecko/vms/platformvm"
"github.com/ava-labs/gecko/vms/spdagvm"
@ -28,11 +26,8 @@ func (n *network) benchmarkSPDAG(chain *platformvm.CreateChainTx) {
tx, err := codec.UnmarshalTx(genesisBytes)
n.log.AssertNoError(err)
cb58 := formatting.CB58{}
keyStr := genesis.Keys[config.Key]
n.log.AssertNoError(cb58.FromString(keyStr))
factory := crypto.FactorySECP256K1R{}
skGen, err := factory.ToPrivateKey(cb58.Bytes)
skGen, err := factory.ToPrivateKey(config.Key)
n.log.AssertNoError(err)
sk := skGen.(*crypto.PrivateKeySECP256K1R)
wallet.ImportKey(sk)