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