Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }