mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 19:50:36 +00:00
46 lines
1010 B
Go
46 lines
1010 B
Go
package vm
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/ledgerwatch/erigon/common"
|
|
"github.com/ledgerwatch/erigon/core/vm/evmtypes"
|
|
"github.com/ledgerwatch/erigon/crypto"
|
|
)
|
|
|
|
func NewCVM(state evmtypes.IntraBlockState) *CVM {
|
|
cvm := &CVM{
|
|
intraBlockState: state,
|
|
}
|
|
|
|
return cvm
|
|
}
|
|
|
|
type CVM struct {
|
|
config Config
|
|
intraBlockState evmtypes.IntraBlockState
|
|
}
|
|
|
|
func (cvm *CVM) Create(caller ContractRef, code []byte) ([]byte, common.Address, error) {
|
|
address := crypto.CreateAddress(caller.Address(), cvm.intraBlockState.GetNonce(caller.Address()))
|
|
cvm.intraBlockState.SetCode(address, code)
|
|
fmt.Println(">>>> Create Starknet Contract", address.Hex())
|
|
return code, common.Address{}, nil
|
|
|
|
//TODO:: execute cairo construct
|
|
//ret, err := cvm.run(code)
|
|
}
|
|
|
|
func (cvm *CVM) Config() Config {
|
|
return cvm.config
|
|
}
|
|
|
|
func (cvm *CVM) IntraBlockState() evmtypes.IntraBlockState {
|
|
return cvm.intraBlockState
|
|
}
|
|
|
|
//func (cvm *CVM) run(code []byte) ([]byte, error) {
|
|
// // TODO:: call grpc cairo
|
|
// return code, nil
|
|
//}
|