public ListenerVM(IBlockchainProvider provider) { this.provider = provider; VMAPI.RegisterAPI(provider, this); Register("Neo.Storage.GetContext", engine => { var hash = engine.CurrentContext.ScriptHash; engine.CurrentContext.EvaluationStack.Push((new VM.Types.InteropInterface(storage[hash]))); return(true); }, defaultGasCost); Register("Neo.Storage.Get", Storage_Get, 0.1m); Register("Neo.Storage.Put", Storage_Put, 0.1m); Register("Neo.Storage.Delete", Storage_Delete, 0.1m); Register("Neo.Runtime.GetTime", engine => { engine.CurrentContext.EvaluationStack.Push(currentBlock.Date.ToTimestamp()); return(true); }, defaultGasCost); Register("Neo.Runtime.GetTrigger", engine => { engine.CurrentContext.EvaluationStack.Push((int)TriggerType.Application); return(true); }, defaultGasCost); //Register("Neo.Runtime.Log", Runtime_Log, defaultGasCost); Register("Neo.Runtime.Notify", Runtime_Notify, defaultGasCost); }
private void RegisterVMMethods() { VMAPI.RegisterAPI(this, this); Register("Neo.Contract.Create", Contract_Create, 500); Register("Neo.Storage.GetContext", engine => { var hash = engine.CurrentContext.ScriptHash; var account = GetAccount(hash); engine.CurrentContext.EvaluationStack.Push((new VM.Types.InteropInterface(account.storage))); return(true); }, defaultGasCost); Register("Neo.Storage.Get", Storage_Get, 0.1m); Register("Neo.Storage.Put", Storage_Put, 0.1m); Register("Neo.Storage.Delete", Storage_Delete, 0.1m); Register("Neo.Runtime.GetTime", Runtime_GetTime, defaultGasCost); Register("Neo.Runtime.GetTrigger", Runtime_GetTrigger, defaultGasCost); Register("Neo.Runtime.CheckWitness", Runtime_CheckWitness, 0.2m); Register("Neo.Runtime.Log", Runtime_Log, defaultGasCost); Register("Neo.Runtime.Notify", Runtime_Notify, defaultGasCost); }