1-4智能合约的helloworld
helloworld 本来是初到世界的第一声问候,本来应该是轻松愉快,对未来充满着无限的期待的一件乐事。
但智能合约的helloworld 确可以说是非常艰苦了。
当然你可以写一句 runtime .log("hello world");来假装轻松愉快。因为neo智能合约并没有自己的专属语言,所以这和c#没什么不同。
neo智能合约是采用编译其它语言为neo虚拟机字节码的方式,我们都会用c#.这很方便,因为neo源码也是用c#编写的。
然后你这句智能合约并不能f5一下就跑起来。这就开始不愉快了。智能合约的系统里没有显示器,helloworld这样简单有趣的例子,你在智能合约的世界根本就不可能运行。
所以让我们忘记这个轻松有趣的例子吧。必须要搞清楚智能合约的输入输出,搞清楚的运行方式,搞清楚怎么观察。
准确的说,NEO智能合约将有4种触发机制,但写这篇文字时,有两种仍然处于未来时,
所以我们只讨论
UTXO付款鉴权合约
和
应用合约
让我们先跳过鉴权合约,这个理解起来比较困难,先从简单的开始。
应用合约只有三种输出手段,一是返回值、二是Storage、三是Notify。如果非要再严格一点,Log 算半个吧。那我们有三个半输出手段
之前那句Runtime.Log("hello world.");因为只能算半个输出手段,作为helloworld 智能算半个。
下面这个,才能算一个helloworld
public class Test01: SmartContract
{
public static objectMain()
{
var helloworld= "helloworld";
return helloworld;
}
}
你不需要发布他,只需要在neogui里面用执行自定义合约直接加载他的AVM 点test
或者用NEOCLI的RPC接口对他的AVM做一个invokescript http请求