forked from mirror/go-ethereum
parent
73b9ae9579
commit
c66cf95b40
@ -0,0 +1,60 @@ |
|||||||
|
package ethchain |
||||||
|
|
||||||
|
import ( |
||||||
|
"github.com/ethereum/eth-go/ethutil" |
||||||
|
"math/big" |
||||||
|
) |
||||||
|
|
||||||
|
type Address struct { |
||||||
|
Amount *big.Int |
||||||
|
Nonce uint64 |
||||||
|
} |
||||||
|
|
||||||
|
func NewAddress(amount *big.Int) *Address { |
||||||
|
return &Address{Amount: amount, Nonce: 0} |
||||||
|
} |
||||||
|
|
||||||
|
func NewAddressFromData(data []byte) *Address { |
||||||
|
address := &Address{} |
||||||
|
address.RlpDecode(data) |
||||||
|
|
||||||
|
return address |
||||||
|
} |
||||||
|
|
||||||
|
func (a *Address) AddFee(fee *big.Int) { |
||||||
|
a.Amount.Add(a.Amount, fee) |
||||||
|
} |
||||||
|
|
||||||
|
func (a *Address) RlpEncode() []byte { |
||||||
|
return ethutil.Encode([]interface{}{a.Amount, a.Nonce}) |
||||||
|
} |
||||||
|
|
||||||
|
func (a *Address) RlpDecode(data []byte) { |
||||||
|
decoder := ethutil.NewValueFromBytes(data) |
||||||
|
|
||||||
|
a.Amount = decoder.Get(0).BigInt() |
||||||
|
a.Nonce = decoder.Get(1).Uint() |
||||||
|
} |
||||||
|
|
||||||
|
type AddrStateStore struct { |
||||||
|
states map[string]*AddressState |
||||||
|
} |
||||||
|
|
||||||
|
func NewAddrStateStore() *AddrStateStore { |
||||||
|
return &AddrStateStore{states: make(map[string]*AddressState)} |
||||||
|
} |
||||||
|
|
||||||
|
func (s *AddrStateStore) Add(addr []byte, account *Address) *AddressState { |
||||||
|
state := &AddressState{Nonce: account.Nonce, Account: account} |
||||||
|
s.states[string(addr)] = state |
||||||
|
return state |
||||||
|
} |
||||||
|
|
||||||
|
func (s *AddrStateStore) Get(addr []byte) *AddressState { |
||||||
|
return s.states[string(addr)] |
||||||
|
} |
||||||
|
|
||||||
|
type AddressState struct { |
||||||
|
Nonce uint64 |
||||||
|
Account *Address |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
package ethchain |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
func TestAddressState(t *testing.T) { |
||||||
|
} |
Loading…
Reference in new issue