aboutsummaryrefslogblamecommitdiff
path: root/plugin/evm/vm.go
blob: 6c9687095d290098679616a4293e4e313528cd54 (plain) (tree)
1
2
3
4
5
6
7





                                                     
               




                       

                  













                                                    
                                             










                                                                
     

                                             

                                             

 







                                                
                                       













                                                                        
                                                       














                                                    
                                     





























































                                                                               
                                                                       



































                                                                                   

                                                        



























































                                                                                                  
                                                       


















                                                                                                







                                                                         
                                                    
                                
                          
                          



                              
                  































                                                                


                                            
                                    
                                           

                                                                                               

                                           
                        
                                               
































                                                                  




                                                                                  
                                                                                                   


                                                      
                               
                                                      

 

                                                     

 







                                                                                 
                                                           

                                                 

                                                                                                                                             







                                                                         

                                                                                                                                             






















                                                                               















































                                                                           

                                                  

                                              
                                          









                                                                                     
                                                                                           


















                                                                              
                                                     









































                                                                                  
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.

package evm

import (
	"bytes"
	"crypto/rand"
	"encoding/json"
	"errors"
	"fmt"
	"math/big"
	"net"
	"net/http"
	"sync"
	"sync/atomic"
	"time"

	"github.com/ava-labs/coreth"
	"github.com/ava-labs/coreth/core"
	"github.com/ava-labs/coreth/eth"
	"github.com/ava-labs/coreth/node"

	"github.com/ava-labs/go-ethereum/common"
	"github.com/ava-labs/go-ethereum/core/types"
	"github.com/ava-labs/go-ethereum/rlp"
	"github.com/ava-labs/go-ethereum/rpc"

	"github.com/ava-labs/gecko/api/admin"
	"github.com/ava-labs/gecko/cache"
	"github.com/ava-labs/gecko/database"
	"github.com/ava-labs/gecko/ids"
	"github.com/ava-labs/gecko/snow"
	"github.com/ava-labs/gecko/snow/choices"
	"github.com/ava-labs/gecko/snow/consensus/snowman"
	"github.com/ava-labs/gecko/utils/timer"

	commonEng "github.com/ava-labs/gecko/snow/engine/common"
)

var (
	zeroAddr = common.Address{
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	}
)

const (
	lastAcceptedKey = "snowman_lastAccepted"
)

const (
	minBlockTime = 250 * time.Millisecond
	maxBlockTime = 1000 * time.Millisecond
	batchSize    = 250
	cacheSize    = 1 << 15 // 32768
)

const (
	bdTimerStateMin = iota
	bdTimerStateMax
	bdTimerStateLong
)

var (
	errEmptyBlock     = errors.New("empty block")
	errCreateBlock    = errors.New("couldn't create block")
	errUnknownBlock   =