56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
|
package state
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"math/big"
|
||
|
)
|
||
|
|
||
|
// Object manifest
|
||
|
//
|
||
|
// The object manifest is used to keep changes to the state so we can keep track of the changes
|
||
|
// that occurred during a state transitioning phase.
|
||
|
type Manifest struct {
|
||
|
Messages Messages
|
||
|
}
|
||
|
|
||
|
func NewManifest() *Manifest {
|
||
|
m := &Manifest{}
|
||
|
m.Reset()
|
||
|
|
||
|
return m
|
||
|
}
|
||
|
|
||
|
func (m *Manifest) Reset() {
|
||
|
m.Messages = nil
|
||
|
}
|
||
|
|
||
|
func (self *Manifest) AddMessage(msg *Message) *Message {
|
||
|
self.Messages = append(self.Messages, msg)
|
||
|
|
||
|
return msg
|
||
|
}
|
||
|
|
||
|
type Messages []*Message
|
||
|
type Message struct {
|
||
|
To, From []byte
|
||
|
Input []byte
|
||
|
Output []byte
|
||
|
Path int
|
||
|
Origin []byte
|
||
|
Timestamp int64
|
||
|
Coinbase []byte
|
||
|
Block []byte
|
||
|
Number *big.Int
|
||
|
Value *big.Int
|
||
|
|
||
|
ChangedAddresses [][]byte
|
||
|
}
|
||
|
|
||
|
func (self *Message) AddStorageChange(addr []byte) {
|
||
|
self.ChangedAddresses = append(self.ChangedAddresses, addr)
|
||
|
}
|
||
|
|
||
|
func (self *Message) String() string {
|
||
|
return fmt.Sprintf("Message{to: %x from: %x input: %x output: %x origin: %x coinbase: %x block: %x number: %v timestamp: %d path: %d value: %v", self.To, self.From, self.Input, self.Output, self.Origin, self.Coinbase, self.Block, self.Number, self.Timestamp, self.Path, self.Value)
|
||
|
}
|