今天满课,所以简单了解了下truffle的unbox中的react。通过这个构建UI界面真的蛮简单。因为课程需要就先看了下。
然后是跟着写了voting的合约,蛮简单,主要是过一下0.5.16中的不同。中间有很多坑。(依然很多坑)
首先构建就是坑:
truffle unbox react
不出所料这个时候应该会有:
gyp ERR! find VS You need to install the latest version of Visual
Studiogyp ERR! find VS including the “Desktop development with C++”
这种类型的错误。
当时发誓来着,再也不用那个 Visual Studio的,但是官方推荐是下载那个,然后勾选c++构建包。
幸好有第二个选项:
node-gyp
好嘛,好不容易几G的构建包下好了,又:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position
0: ordinal not in range(128)
难受不?
但是不怕啊,总算是Python报错了。自己可以尝试debug。
最终结论:
gyp下的这个文件中,会获取当前路径作为name参数传入,然后:
d = hashlib.md5((str(seed) + str(name)).encode('utf-8')).hexdigest().upper()
有一个这个操作,就导致中文无法被编码。。。
路径不包含中文就好了。
————————————————
现在环境问题解决了,可以开始写合约了。
问题又一大堆。
0.4.x-0.5.x真的就是两个语言。
看到那些红线了吗。。我tm一点一点debug过来的。大致就是:
需要强制定义数据存储位置(storage和memery)
必须要+public
没有写操作的地方要+view
构造函数变成了constructor
很坑爹的是给构造函数传参的时候,
当时写的是bytes32。。没注意,就传的string数组过去。差点电脑跑死机。
pragma experimental ABIEncoderV2;
+了这句之后就能使用string的数组传数据了。
然后truffle中给合约构造函数传参是:
在这里传的。
然后进devlop编译部署。
上面不加require输入不存在的who好像没有报错。
明天看看react吧!