OSDN Git Service

Thanos did someting
[bytom/vapor.git] / api / accounts.go
diff --git a/api/accounts.go b/api/accounts.go
deleted file mode 100644 (file)
index a0d551a..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-package api
-
-import (
-       "context"
-       "encoding/hex"
-       "sort"
-
-       log "github.com/sirupsen/logrus"
-
-       "github.com/vapor/account"
-       "github.com/vapor/blockchain/signers"
-       "github.com/vapor/common"
-       "github.com/vapor/consensus"
-       "github.com/vapor/crypto/ed25519/chainkd"
-       "github.com/vapor/protocol/vm/vmutil"
-)
-
-// POST /create-account
-func (a *API) createAccount(ctx context.Context, ins struct {
-       RootXPubs []chainkd.XPub `json:"root_xpubs"`
-       Quorum    int            `json:"quorum"`
-       Alias     string         `json:"alias"`
-}) Response {
-       acc, err := a.wallet.AccountMgr.Create(ins.RootXPubs, ins.Quorum, ins.Alias, signers.BIP0044)
-       if err != nil {
-               return NewErrorResponse(err)
-       }
-
-       annotatedAccount := account.Annotated(acc)
-       log.WithField("account ID", annotatedAccount.ID).Info("Created account")
-
-       return NewSuccessResponse(annotatedAccount)
-}
-
-// POST update-account-alias
-func (a *API) updateAccountAlias(ctx context.Context, ins struct {
-       AccountID    string `json:"account_id"`
-       AccountAlias string `json:"account_alias"`
-       NewAlias     string `json:"new_alias"`
-}) Response {
-       accountID := ins.AccountID
-       if ins.AccountAlias != "" {
-               foundAccount, err := a.wallet.AccountMgr.FindByAlias(ins.AccountAlias)
-               if err != nil {
-                       return NewErrorResponse(err)
-               }
-               accountID = foundAccount.ID
-       }
-       if err := a.wallet.UpdateAccountAlias(accountID, ins.NewAlias); err != nil {
-               return NewErrorResponse(err)
-       }
-       return NewSuccessResponse(nil)
-}
-
-// AccountInfo is request struct for deleteAccount
-type AccountInfo struct {
-       Info string `json:"account_info"`
-}
-
-// POST /delete-account
-func (a *API) deleteAccount(ctx context.Context, filter struct {
-       AccountID    string `json:"account_id"`
-       AccountAlias string `json:"account_alias"`
-}) Response {
-       accountID := filter.AccountID
-       if filter.AccountAlias != "" {
-               acc, err := a.wallet.AccountMgr.FindByAlias(filter.AccountAlias)
-               if err != nil {
-                       return NewErrorResponse(err)
-               }
-               accountID = acc.ID
-       }
-       if err := a.wallet.DeleteAccount(accountID); err != nil {
-               return NewErrorResponse(err)
-       }
-
-       return NewSuccessResponse(nil)
-}
-
-type validateAddressResp struct {
-       Valid   bool `json:"valid"`
-       IsLocal bool `json:"is_local"`
-}
-
-// POST /validate-address
-func (a *API) validateAddress(ctx context.Context, ins struct {
-       Address string `json:"address"`
-}) Response {
-       resp := &validateAddressResp{
-               Valid:   false,
-               IsLocal: false,
-       }
-       address, err := common.DecodeAddress(ins.Address, &consensus.ActiveNetParams)
-       if err != nil {
-               return NewSuccessResponse(resp)
-       }
-
-       redeemContract := address.ScriptAddress()
-       program := []byte{}
-       switch address.(type) {
-       case *common.AddressWitnessPubKeyHash:
-               program, err = vmutil.P2WPKHProgram(redeemContract)
-       case *common.AddressWitnessScriptHash:
-               program, err = vmutil.P2WSHProgram(redeemContract)
-       default:
-               return NewSuccessResponse(resp)
-       }
-       if err != nil {
-               return NewSuccessResponse(resp)
-       }
-
-       resp.Valid = true
-       resp.IsLocal = a.wallet.AccountMgr.IsLocalControlProgram(program)
-       return NewSuccessResponse(resp)
-}
-
-type addressResp struct {
-       AccountAlias   string `json:"account_alias"`
-       AccountID      string `json:"account_id"`
-       Address        string `json:"address"`
-       ControlProgram string `json:"control_program"`
-       Change         bool   `json:"change"`
-       KeyIndex       uint64 `json:"key_index"`
-}
-
-// SortByIndex implements sort.Interface for addressResp slices
-type SortByIndex []addressResp
-
-func (a SortByIndex) Len() int           { return len(a) }
-func (a SortByIndex) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
-func (a SortByIndex) Less(i, j int) bool { return a[i].KeyIndex < a[j].KeyIndex }
-
-func (a *API) listAddresses(ctx context.Context, ins struct {
-       AccountID    string `json:"account_id"`
-       AccountAlias string `json:"account_alias"`
-       From         uint   `json:"from"`
-       Count        uint   `json:"count"`
-}) Response {
-       accountID := ins.AccountID
-       var target *account.Account
-       if ins.AccountAlias != "" {
-               acc, err := a.wallet.AccountMgr.FindByAlias(ins.AccountAlias)
-               if err != nil {
-                       return NewErrorResponse(err)
-               }
-               target = acc
-       } else {
-               acc, err := a.wallet.AccountMgr.FindByID(accountID)
-               if err != nil {
-                       return NewErrorResponse(err)
-               }
-               target = acc
-       }
-
-       cps, err := a.wallet.AccountMgr.ListControlProgram()
-       if err != nil {
-               return NewErrorResponse(err)
-       }
-
-       addresses := []addressResp{}
-       for _, cp := range cps {
-               if cp.Address == "" || cp.AccountID != target.ID {
-                       continue
-               }
-               addresses = append(addresses, addressResp{
-                       AccountAlias:   target.Alias,
-                       AccountID:      cp.AccountID,
-                       Address:        cp.Address,
-                       ControlProgram: hex.EncodeToString(cp.ControlProgram),
-                       Change:         cp.Change,
-                       KeyIndex:       cp.KeyIndex,
-               })
-       }
-
-       // sort AddressResp by KeyIndex
-       sort.Sort(SortByIndex(addresses))
-       start, end := getPageRange(len(addresses), ins.From, ins.Count)
-       return NewSuccessResponse(addresses[start:end])
-}
-
-type minigAddressResp struct {
-       MiningAddress string `json:"mining_address"`
-}
-
-func (a *API) getMiningAddress(ctx context.Context) Response {
-       miningAddress, err := a.wallet.AccountMgr.GetMiningAddress()
-       if err != nil {
-               return NewErrorResponse(err)
-       }
-       return NewSuccessResponse(minigAddressResp{
-               MiningAddress: miningAddress,
-       })
-}
-
-// POST /set-mining-address
-func (a *API) setMiningAddress(ctx context.Context, in struct {
-       MiningAddress string `json:"mining_address"`
-}) Response {
-       miningAddress, err := a.wallet.AccountMgr.SetMiningAddress(in.MiningAddress)
-       if err != nil {
-               return NewErrorResponse(err)
-       }
-       return NewSuccessResponse(minigAddressResp{
-               MiningAddress: miningAddress,
-       })
-}