mirror of https://github.com/poanetwork/gecko.git
Changed sk indexing, bumped version
This commit is contained in:
parent
56deaf7c9d
commit
69065c50b5
|
@ -28,7 +28,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
dbVersion = "v0.2.0"
|
dbVersion = "v0.3.0"
|
||||||
defaultDbDir = "~/.gecko/db"
|
defaultDbDir = "~/.gecko/db"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -68,8 +68,8 @@ var (
|
||||||
VersionPrefix = "avalanche/"
|
VersionPrefix = "avalanche/"
|
||||||
VersionSeparator = "."
|
VersionSeparator = "."
|
||||||
MajorVersion = 0
|
MajorVersion = 0
|
||||||
MinorVersion = 2
|
MinorVersion = 3
|
||||||
PatchVersion = 1
|
PatchVersion = 0
|
||||||
ClientVersion = fmt.Sprintf("%s%d%s%d%s%d",
|
ClientVersion = fmt.Sprintf("%s%d%s%d%s%d",
|
||||||
VersionPrefix,
|
VersionPrefix,
|
||||||
MajorVersion,
|
MajorVersion,
|
||||||
|
|
|
@ -16,10 +16,11 @@ import (
|
||||||
"github.com/ava-labs/gecko/utils/formatting"
|
"github.com/ava-labs/gecko/utils/formatting"
|
||||||
"github.com/ava-labs/gecko/utils/hashing"
|
"github.com/ava-labs/gecko/utils/hashing"
|
||||||
"github.com/ava-labs/gecko/utils/json"
|
"github.com/ava-labs/gecko/utils/json"
|
||||||
safemath "github.com/ava-labs/gecko/utils/math"
|
|
||||||
"github.com/ava-labs/gecko/vms/components/ava"
|
"github.com/ava-labs/gecko/vms/components/ava"
|
||||||
"github.com/ava-labs/gecko/vms/components/verify"
|
"github.com/ava-labs/gecko/vms/components/verify"
|
||||||
"github.com/ava-labs/gecko/vms/secp256k1fx"
|
"github.com/ava-labs/gecko/vms/secp256k1fx"
|
||||||
|
|
||||||
|
safemath "github.com/ava-labs/gecko/utils/math"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -511,7 +512,7 @@ func (service *Service) CreateAddress(r *http.Request, args *CreateAddressArgs,
|
||||||
}
|
}
|
||||||
|
|
||||||
addresses, _ := user.Addresses(db)
|
addresses, _ := user.Addresses(db)
|
||||||
addresses = append(addresses, ids.NewID(hashing.ComputeHash256Array(sk.PublicKey().Address().Bytes())))
|
addresses = append(addresses, sk.PublicKey().Address())
|
||||||
|
|
||||||
if err := user.SetAddresses(db, addresses); err != nil {
|
if err := user.SetAddresses(db, addresses); err != nil {
|
||||||
return fmt.Errorf("problem saving address: %w", err)
|
return fmt.Errorf("problem saving address: %w", err)
|
||||||
|
@ -541,10 +542,11 @@ func (service *Service) ListAddresses(_ *http.Request, args *ListAddressesArgs,
|
||||||
return fmt.Errorf("problem retrieving user: %w", err)
|
return fmt.Errorf("problem retrieving user: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
response.Addresses = []string{}
|
||||||
|
|
||||||
user := userState{vm: service.vm}
|
user := userState{vm: service.vm}
|
||||||
addresses, err := user.Addresses(db)
|
addresses, err := user.Addresses(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.Addresses = nil
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -575,6 +577,10 @@ func (service *Service) ExportKey(r *http.Request, args *ExportKeyArgs, reply *E
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem parsing address: %w", err)
|
return fmt.Errorf("problem parsing address: %w", err)
|
||||||
}
|
}
|
||||||
|
addr, err := ids.ToShortID(address)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("problem parsing address: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
db, err := service.vm.ctx.Keystore.GetDatabase(args.Username, args.Password)
|
db, err := service.vm.ctx.Keystore.GetDatabase(args.Username, args.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -583,7 +589,7 @@ func (service *Service) ExportKey(r *http.Request, args *ExportKeyArgs, reply *E
|
||||||
|
|
||||||
user := userState{vm: service.vm}
|
user := userState{vm: service.vm}
|
||||||
|
|
||||||
sk, err := user.Key(db, ids.NewID(hashing.ComputeHash256Array(address)))
|
sk, err := user.Key(db, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem retrieving private key: %w", err)
|
return fmt.Errorf("problem retrieving private key: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -628,7 +634,7 @@ func (service *Service) ImportKey(r *http.Request, args *ImportKeyArgs, reply *I
|
||||||
}
|
}
|
||||||
|
|
||||||
addresses, _ := user.Addresses(db)
|
addresses, _ := user.Addresses(db)
|
||||||
addresses = append(addresses, ids.NewID(hashing.ComputeHash256Array(sk.PublicKey().Address().Bytes())))
|
addresses = append(addresses, sk.PublicKey().Address())
|
||||||
|
|
||||||
if err := user.SetAddresses(db, addresses); err != nil {
|
if err := user.SetAddresses(db, addresses); err != nil {
|
||||||
return fmt.Errorf("problem saving addresses: %w", err)
|
return fmt.Errorf("problem saving addresses: %w", err)
|
||||||
|
@ -687,7 +693,9 @@ func (service *Service) Send(r *http.Request, args *SendArgs, reply *SendReply)
|
||||||
addresses, _ := user.Addresses(db)
|
addresses, _ := user.Addresses(db)
|
||||||
|
|
||||||
addrs := ids.Set{}
|
addrs := ids.Set{}
|
||||||
addrs.Add(addresses...)
|
for _, addr := range addresses {
|
||||||
|
addrs.Add(ids.NewID(hashing.ComputeHash256Array(addr.Bytes())))
|
||||||
|
}
|
||||||
utxos, err := service.vm.GetUTXOs(addrs)
|
utxos, err := service.vm.GetUTXOs(addrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem retrieving user's UTXOs: %w", err)
|
return fmt.Errorf("problem retrieving user's UTXOs: %w", err)
|
||||||
|
@ -956,6 +964,10 @@ func (service *Service) SignMintTx(r *http.Request, args *SignMintTxArgs, reply
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem parsing address '%s': %w", args.Minter, err)
|
return fmt.Errorf("problem parsing address '%s': %w", args.Minter, err)
|
||||||
}
|
}
|
||||||
|
addr, err := ids.ToShortID(minter)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("problem parsing address '%s': %w", args.Minter, err)
|
||||||
|
}
|
||||||
|
|
||||||
db, err := service.vm.ctx.Keystore.GetDatabase(args.Username, args.Password)
|
db, err := service.vm.ctx.Keystore.GetDatabase(args.Username, args.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -964,7 +976,6 @@ func (service *Service) SignMintTx(r *http.Request, args *SignMintTxArgs, reply
|
||||||
|
|
||||||
user := userState{vm: service.vm}
|
user := userState{vm: service.vm}
|
||||||
|
|
||||||
addr := ids.NewID(hashing.ComputeHash256Array(minter))
|
|
||||||
sk, err := user.Key(db, addr)
|
sk, err := user.Key(db, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem retriving private key: %w", err)
|
return fmt.Errorf("problem retriving private key: %w", err)
|
||||||
|
@ -1094,7 +1105,10 @@ func (service *Service) ImportAVA(_ *http.Request, args *ImportAVAArgs, reply *I
|
||||||
addresses, _ := user.Addresses(db)
|
addresses, _ := user.Addresses(db)
|
||||||
|
|
||||||
addrs := ids.Set{}
|
addrs := ids.Set{}
|
||||||
addrs.Add(addresses...)
|
for _, addr := range addresses {
|
||||||
|
addrs.Add(ids.NewID(hashing.ComputeHash256Array(addr.Bytes())))
|
||||||
|
}
|
||||||
|
|
||||||
utxos, err := service.vm.GetAtomicUTXOs(addrs)
|
utxos, err := service.vm.GetAtomicUTXOs(addrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem retrieving user's atomic UTXOs: %w", err)
|
return fmt.Errorf("problem retrieving user's atomic UTXOs: %w", err)
|
||||||
|
@ -1238,7 +1252,10 @@ func (service *Service) ExportAVA(_ *http.Request, args *ExportAVAArgs, reply *E
|
||||||
addresses, _ := user.Addresses(db)
|
addresses, _ := user.Addresses(db)
|
||||||
|
|
||||||
addrs := ids.Set{}
|
addrs := ids.Set{}
|
||||||
addrs.Add(addresses...)
|
for _, addr := range addresses {
|
||||||
|
addrs.Add(ids.NewID(hashing.ComputeHash256Array(addr.Bytes())))
|
||||||
|
}
|
||||||
|
|
||||||
utxos, err := service.vm.GetUTXOs(addrs)
|
utxos, err := service.vm.GetUTXOs(addrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("problem retrieving user's UTXOs: %w", err)
|
return fmt.Errorf("problem retrieving user's UTXOs: %w", err)
|
||||||
|
|
|
@ -7,14 +7,13 @@ import (
|
||||||
"github.com/ava-labs/gecko/database"
|
"github.com/ava-labs/gecko/database"
|
||||||
"github.com/ava-labs/gecko/ids"
|
"github.com/ava-labs/gecko/ids"
|
||||||
"github.com/ava-labs/gecko/utils/crypto"
|
"github.com/ava-labs/gecko/utils/crypto"
|
||||||
"github.com/ava-labs/gecko/utils/hashing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var addresses = ids.Empty
|
var addresses = ids.Empty
|
||||||
|
|
||||||
type userState struct{ vm *VM }
|
type userState struct{ vm *VM }
|
||||||
|
|
||||||
func (s *userState) SetAddresses(db database.Database, addrs []ids.ID) error {
|
func (s *userState) SetAddresses(db database.Database, addrs []ids.ShortID) error {
|
||||||
bytes, err := s.vm.codec.Marshal(addrs)
|
bytes, err := s.vm.codec.Marshal(addrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -22,12 +21,12 @@ func (s *userState) SetAddresses(db database.Database, addrs []ids.ID) error {
|
||||||
return db.Put(addresses.Bytes(), bytes)
|
return db.Put(addresses.Bytes(), bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *userState) Addresses(db database.Database) ([]ids.ID, error) {
|
func (s *userState) Addresses(db database.Database) ([]ids.ShortID, error) {
|
||||||
bytes, err := db.Get(addresses.Bytes())
|
bytes, err := db.Get(addresses.Bytes())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
addresses := []ids.ID{}
|
addresses := []ids.ShortID{}
|
||||||
if err := s.vm.codec.Unmarshal(bytes, &addresses); err != nil {
|
if err := s.vm.codec.Unmarshal(bytes, &addresses); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -35,10 +34,10 @@ func (s *userState) Addresses(db database.Database) ([]ids.ID, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *userState) SetKey(db database.Database, sk *crypto.PrivateKeySECP256K1R) error {
|
func (s *userState) SetKey(db database.Database, sk *crypto.PrivateKeySECP256K1R) error {
|
||||||
return db.Put(hashing.ComputeHash256(sk.PublicKey().Address().Bytes()), sk.Bytes())
|
return db.Put(sk.PublicKey().Address().Bytes(), sk.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *userState) Key(db database.Database, address ids.ID) (*crypto.PrivateKeySECP256K1R, error) {
|
func (s *userState) Key(db database.Database, address ids.ShortID) (*crypto.PrivateKeySECP256K1R, error) {
|
||||||
factory := crypto.FactorySECP256K1R{}
|
factory := crypto.FactorySECP256K1R{}
|
||||||
|
|
||||||
bytes, err := db.Get(address.Bytes())
|
bytes, err := db.Get(address.Bytes())
|
||||||
|
|
Loading…
Reference in New Issue