61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package chain
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"fmt"
 | 
						|
	"math/big"
 | 
						|
 | 
						|
	"github.com/ethereum/go-ethereum/ethutil"
 | 
						|
	"github.com/ethereum/go-ethereum/state"
 | 
						|
)
 | 
						|
 | 
						|
type Receipt struct {
 | 
						|
	PostState         []byte
 | 
						|
	CumulativeGasUsed *big.Int
 | 
						|
	Bloom             []byte
 | 
						|
	logs              state.Logs
 | 
						|
}
 | 
						|
 | 
						|
func NewRecieptFromValue(val *ethutil.Value) *Receipt {
 | 
						|
	r := &Receipt{}
 | 
						|
	r.RlpValueDecode(val)
 | 
						|
 | 
						|
	return r
 | 
						|
}
 | 
						|
 | 
						|
func (self *Receipt) RlpValueDecode(decoder *ethutil.Value) {
 | 
						|
	self.PostState = decoder.Get(0).Bytes()
 | 
						|
	self.CumulativeGasUsed = decoder.Get(1).BigInt()
 | 
						|
	self.Bloom = decoder.Get(2).Bytes()
 | 
						|
 | 
						|
	it := decoder.Get(3).NewIterator()
 | 
						|
	for it.Next() {
 | 
						|
		self.logs = append(self.logs, state.NewLogFromValue(it.Value()))
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (self *Receipt) RlpData() interface{} {
 | 
						|
	return []interface{}{self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs.RlpData()}
 | 
						|
}
 | 
						|
 | 
						|
func (self *Receipt) RlpEncode() []byte {
 | 
						|
	return ethutil.Encode(self.RlpData())
 | 
						|
}
 | 
						|
 | 
						|
func (self *Receipt) Cmp(other *Receipt) bool {
 | 
						|
	if bytes.Compare(self.PostState, other.PostState) != 0 {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
 | 
						|
	return true
 | 
						|
}
 | 
						|
 | 
						|
func (self *Receipt) String() string {
 | 
						|
	return fmt.Sprintf("receipt{med=%x cgas=%v bloom=%x logs=%v}", self.PostState, self.CumulativeGasUsed, self.Bloom, self.logs)
 | 
						|
}
 | 
						|
 | 
						|
type Receipts []*Receipt
 | 
						|
 | 
						|
func (self Receipts) Len() int            { return len(self) }
 | 
						|
func (self Receipts) GetRlp(i int) []byte { return ethutil.Rlp(self[i]) }
 |