public SolidityExecutor Execute(IEnumerable <byte> scAddrPayload, IEnumerable <byte> addrPayload, IEnumerable <byte> data, bool addInTransaction = false) { if (scAddrPayload == null) { throw new ArgumentNullException(nameof(scAddrPayload)); } if (addrPayload == null) { addrPayload = new byte[0]; } var smartContract = _smartContractStore.GetSmartContracts().GetSmartContract(scAddrPayload); var defaultCallValue = new DataWord(new byte[] { 0x00 }); _smartContracts = _smartContractStore.GetSmartContracts(); var scode = smartContract.Code.ToHexString(); _solidityProgram = new SolidityProgram(smartContract.Code.ToList(), new SolidityProgramInvoke(data, smartContract.Address, new DataWord(addrPayload.ToArray()), defaultCallValue, _smartContracts, addInTransaction)); var vm = new SolidityVm(); while (!_solidityProgram.IsStopped()) { vm.Step(_solidityProgram); } return(this); }
public SolidityProgramInvoke(IEnumerable <byte> smartContractAddress, DataWord ownerAddress, DataWord callValue, SmartContracts smartContracts) { _smartContractAddress = smartContractAddress; _ownerAddress = ownerAddress; _callValue = callValue; _smartContracts = smartContracts; }
public SolidityProgramInvoke(IEnumerable <byte> msgDataRaw, IEnumerable <byte> smartContractAddress, DataWord ownerAddress, DataWord callValue, SmartContracts smartContracts, bool addInTransaction = false) { _msgDataRaw = msgDataRaw; _smartContractAddress = smartContractAddress; _ownerAddress = ownerAddress; _callValue = callValue; _smartContracts = smartContracts; _addInTransaction = addInTransaction; }