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)
 | 
						|
}
 |