Skip to content

每日优质内容复盘

Shunda edited this page Feb 3, 2018 · 88 revisions

每日优质内容复盘-2018.2.3

【重要通知】

@雅珣-班长:

各位可爱的开拓者们,时间过得好快呀,咱们第二期的课程马上就要结束了

明天上午十点,老董将在直播间等待大家最后一次课程总答疑

总答疑结束后,大约为北京时间2月4日上午10:45左右在微信群内举行结业典礼,小伙伴们准时来参加喔~

呐,这是班班熬夜做出的回忆录,献给每一位开拓者,记得点开看看哟 https://s.wcd.im/v/2hfp2Z3c/

@董老师:

各位参加白帽黑客大赛的同学们,因为你们玩儿的太high了,老董看了合约的trasaction头皮发麻,请你们派出组长给我私信总结一下本组的闪光点,比如在什么时候发现了什么漏洞,什么时候利用了什么漏洞,请顺便提交证据(微信截图,或者是testnet transaction记录),帮助我裁决最终名次

【优质课程资源】

【优质群内讨论】

@齐明:

各位同学请注意! 这里有一个合同 0xc3e2293c7c306bc3dd4e0ffedbb0466430c186a0

请以下的合同拥有者call合同中 iamtheowner(studentnumber) 的function,把你们的学号给我。为什么给了再说,有惊喜
0xA6480AF1FFC70e78A9bef80355EC5D5E1C504747 0xEaDCE49ef3020951f5c30E15A706F7886921EBeF 0x4954E3A7b51048EeD9AD331DD502848008118a6a 0x69305D2c5FA45aA3Ef341Ef832A95691870D650d 0x9c00330C87bE1d7e37b8AB0ebcF8823346ccDdB2

合约代码:

pragma solidity ^0.4.17;

contract iamtheowner {
    uint[] internal studentnumbers;
    address[] public authorizedUsers;
    mapping(address => Student) public students;
    
    
    struct Student {
        address account;
        uint studentnumber;
    }
    
    function iamtheowner()  {
        authorizedUsers.push(0xA6480AF1FFC70e78A9bef80355EC5D5E1C504747);
        authorizedUsers.push(0xEaDCE49ef3020951f5c30E15A706F7886921EBeF);
        authorizedUsers.push(0x4954E3A7b51048EeD9AD331DD502848008118a6a);
        authorizedUsers.push(0x69305D2c5FA45aA3Ef341Ef832A95691870D650d);
        authorizedUsers.push(0x9c00330C87bE1d7e37b8AB0ebcF8823346ccDdB2);
        authorizedUsers.push(0x141c5077AC085c51483D70be19Ba5FF439F47c64);
        
        for (uint i = 0; i < authorizedUsers.length; i++) {
            students[authorizedUsers[i]] = Student(authorizedUsers[i], 0);
        }
    }

    modifier onlyAuthorized() {
        bool pass = false;

        for (uint i = 0; i < authorizedUsers.length; i++) {
            if(authorizedUsers [i] == msg.sender) {
                pass = true;
                break;
            }
        }
        require (pass);
        _;
    }
        
    function myidis(uint studentnumber) onlyAuthorized {
          var student = students[msg.sender];
          student.studentnumber = studentnumber;
    }

    function checkStudent(uint index) returns (address account, uint studentnumber) {
        assert(msg.sender == 0x141c5077ac085c51483d70be19ba5ff439f47c64);
        account = authorizedUsers[index];
        var student  = students[account];
        studentnumber = student.studentnumber;
    }

}

【打卡干货集锦】

今日话题

课程快要结束啦,来向大家推荐一本区块链相关书籍吧,并附上你的推荐理由哦~

优质回答

@谢倩:

替自己这学期上的《赛博智能经济与区块链》课的徐恪老师打个广告,《算法统治世界——智能经济的隐形秩序》里面有一部分区块链的内容 我自己没有看过任何一本书,基本上是使用Google搜索,搜到巴比特论坛的文章的时候比较多,此外还是可以多读读paper

@陈鹏:

和郭子汉推荐的一样,《技术驱动金融》这本书,逻辑非常清楚。另外如果要深入学习比特币原理,可以读一下《精通比特币》。黑名单是国内出的大部分区块链相关书籍,言之无物。

@胡圣托:

精通比特币 各种白皮书


# 每日优质内容复盘-2018.2.2

【重要通知】

@董沫 课程老师: 澄清一下啊,我在部署合约之后不会做任何额外操作

【打卡干货集锦】

今日话题

时间倒回2016年6月,你会支持以太坊硬分叉吗?为什么?

优质回答

@王磊:

支持,毕竟是行业发展初期。如果不分叉有可能区块链行业的发展又会滞后几年

@艳阳:

会,因为这次分叉让我们看到区块链的安全性问题,引起了大家的思考并寻求解决办法,相应地也产生了很多技术。

每日优质内容复盘-2018.2.1

【重要通知】

@董沫 课程老师: 所有用交易所地址的同学,请找 @雅珣班长 汇报

@雅珣班长: 请大家私聊 发给我姓名 组队 新地址哈。群消息太多怕遗漏

@董沫 课程老师: 给大家半小时改地址,半小时后没有改的同学影响队伍成绩自己背锅了

【优质群内讨论】

话题1

@陆周_北京_学生: 刚看了第七课的视频 不知道大家怎么看 infura.io 感觉很需要这种项目..让区块链更易用,封装底层的逻辑 降低开发难度的项目;还有个ark.io 也是这种项目 ..但是远远不够的感觉..不知道这些项目以后怎么和palsma结合. 毕竟他们现在只是一个节点.. 以后有机会是成为以太坊的一个palsma子链嘛?

@谭旭-北京-自由职业: @陆周_北京_学生 你提的是好问题,不过目前这类工具功能比较简单啊……另一方面得找到开发中真实的痛点需求啊

话题2

@董沫 课程老师: 各位 有不少同学提交的地址是不正确的;本次比赛中 提交错误地址的同学会被自动除名

@缪逸伦-新布朗斯维克-研究生: 正确的地址是什么样的?一定要用metamask的地址吗?

@董沫 课程老师: 不一定要用metamask的地址哈

@雅珣班长: 董老师帮各位将地址改过来了 所以不需要修改了

@董沫 课程老师: 大家有多少人用的是非metamask的地址?

@陆周_北京_学生: im生成的不行嘛?

@董沫 课程老师: im生成的可以,但是需要到时候导出私钥才能调用合约函数

@胡圣托-安娜堡-学生: 我用了coinbase的地址

@董沫 课程老师: coinbase不行

@董沫 课程老师: 原则上面 需要自己控制这个地址的私钥; imtoken metamask mytherwallet 都可以

【打卡干货集锦】

今日话题

现在越来越多的数字货币也在发明中,这样的情况会对区块链推进商业应用有什么好或者不好的影响吗?

优质回答

@薛含宇 Harry:

image

@Yammy:

image

@FattyDolphin:

image

每日优质内容复盘-2018.1.31

【重要通知】

@陈垚文-学委:

周六预告来一波~ 北京时间周六(2月3日)上午10点,蔡志诚助教来给我们做分享~

主题:破解养猫合约与智能合约伪随机数 主讲人:助教蔡至诚 时间:30min 硬货满满,大家做好心理准备哦

@雅珣-班长:

⭐️再来一波福利⭐️
智能合约开发课一期的开拓者们每周六会在一期社群举办一场分享会,将围绕某热门区块链项目or技术问题等进行深入剖析。

同时,北京时间本周三晚上8点,分享者将在群内抛出一个基于【周六分享会】内容的话题,激发学员参与思考与讨论;

本周六的分享者是你们的刘芳璐助教,她会给大家讲解《byzantine fault tolerance 和 neo的dbft算法》,想来听学霸刘芳璐的分享会嘛

若想参与分享会勾搭学长学姐请填写下方报名表噢

我将抽取五名同学加入到一期社群中参与分享会~
http://cn.mikecrm.com/E43DzPn

@雅珣-班长:

各位开拓者们,距离白帽黑客大赛规则发布时间仅剩:24小时!

各位参赛者们互相告知喔,还未报名的同学,尽快填写报名表。

加油,祝大家挑战顺利

@陈垚文-学委:

【通知】
作业请假的同学,如果没有按请假条中填写的日期补交作业的话,是没办法毕业的哦~

【课程答疑】

Q1. @缪逸伦: 利用infuro部署时出现exceeds block gas limit的error是需要修改哪里吗?

  • @李涛:truffle-config.js中把gas设大点
ropsten: {
    provider: function() {
		return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/gYQcfCK5nmcxAwEoRvGV", 5)
    },
    gas: 2706583,
    network_id: 3
},

Q2. @李涛: 部署时报错insufficient funds for gas * price + value

  • @蔡志诚-助教: 这可能是钱不够,创建合约也要花钱。先在Ropsten网络上申请一些ether https://faucet.metamask.io/

Q3. @齐明: 问一个问题:课程员工系统中,作为雇主我把contract部署到了ROPSTEN的测试环境中了。目前通过在local运行前端我可以直接通过UI访问这个contract,但是员工访问不到这个前端,那么员工在没有前端的情况下如何直接访问和调用这个已经部署的contract呢?

  • @陈垚文-学委: myetherwallet 可以通过地址和abi调用 再一个就是自己也本地部署

Q4. @齐明: 为什么从Myetherwallet上访问checkInfo需要点Write而且需要支付gas,但是从localhost的UI里访问就不需要?

  • @何智华-助教: 我的理解是,合约里的方法不加view/pure修饰符默认是要写区块的,也需要gas。代码里可以用web3.eth.call来"只读"执行这个方法

Q5. @齐明: 有没有办法从command line调用contract的public function?run full node?

  • @何智华-助教: 关于命令行调用合约的方法,你可以想想你合约部署到testrpc后,用commandline结合truffle是怎么调用合约的?理论上testrpc提供了可以和区块链交互的jsonrpc接口,你只要有找到提供jsonrpc接口的节点即可与之交互。不过命令行如何处理签名,发送交易需要有框架支持

【优质群内讨论】

利用智能合约抽号码

@张子栋: 刚刚在Ropsten上部署的一个基于timestamp的生成1~input的伪随机数的合约

  • 合约地址:0x3a9a4c08efdc702cb27a6ffbe97b2d191058cbed
  • ABI:
[
	{
		"constant": true,
		"inputs": [
			{
				"name": "bar",
				"type": "uint256"
			}
		],
		"name": "foo",
		"outputs": [
			{
				"name": "",
				"type": "uint256"
			}
		],
		"payable": false,
		"stateMutability": "view",
		"type": "function"
	}
]
  • 合约代码:
pragma solidity ^0.4.18;
contract Hey{
    
    function foo(uint bar) public view returns (uint) {
        return uint(keccak256(now))%bar + 1;
    }
}

【打卡干货集锦】

今日话题

转移脏款是犯罪分子面临的一大问题。因为不能使用银行账户,拖着一堆现金显然很不方便,比特币把这些问题都解决了。因此,有人说比特币会引发高犯罪率。你觉得呢?如果会,该如何监管?

优质回答

@蓝熊panda:

我觉得不会。
比特币只是方便了一些。没有这种办法,还会有其他的办法转移。

如果会,没法监管,因为比特币就像你手上的现金一样,是不记名的。只有在存银行的时候才能监管到。

@张子栋:

技术的创新总能带来新的犯罪方式,这很正常,因为技术本身是中性的。监管需要做到的就是去适应技术的革新。其实现在很多exchange都要求KYC了,所以给犯罪分子也带来了一定的障碍。而且现在已经有技术能追溯比特币交易了,通过分析一定的pattern是可以将地址和identity连接起来的,即使是经过现在的一些混币器也是有办法track back的。另外虽然说有的币是可以隐藏交易的,但只要使用它换成法币或者直接进行实物的交易,总会留下痕迹的。

@陈浩林:

这假的吧,下这个定义的人毫无逻辑可言啊。转移赃款引发高犯罪率?现在可以转移了,我就去犯罪吗?不可能的吧。肯定是先犯罪,才转移啊。至于如何监管,根源还是如何制止犯罪吧。


每日优质内容复盘-2018.1.30

【重要通知】

@雅珣班长: 各位开拓者们, 距第二届白帽黑客挑战赛活动开始还剩不到24小时,大家抓住最后的机会报名哈

@雅珣班长: 各位开拓者们,你们报名的热情都把我惊呆啦,哈哈

为了大家能够利用周末集中精力参加比赛,教研组一致决定咱们白帽黑客挑战赛稍作调整: 1.规则发布时间改为: 北京时间2月1日中午12点

2.活动时间: 北京时间2月1日中午12点—北京时间2月3日晚上24点

3.活动总时长:60小时

各位参赛者们互相告知喔,大家加油

【课程答疑】

Q1. @齐明-Perth-开发: 这个比赛是什么形式啊,怎么个团队合作法,只是团队讨论问题吗?还是大家要写代码来破?

  • @雅珣班长: 黑客大赛是通过破解老董部署在以太坊上Ropsten测试网络的一个智能合约,让大家认识到以及充分实践重要的智能合约安全知识,同时也是课程的一个结业考试。 具体内容暂时不能公布,2月1日中午12点老董发布规则哈

Q2. @肖鹏-武汉-学生:

image

我增加资金和增加员工都报同样的错误,这个文件好像是自己生成的。点进去后的代码如下:

image

Q3. @陆周-北京-学生: 钱不够了...控制台报这个错..咋办

image

然后控制台不停的打印..这个solidity的event是 搞的轮询嘛?还每秒去请求一下rpc的感觉..把event关闭..还真就停止请求了..

image

Q4. @郭嘉-杭州-Android开发: 请问,我这个总是loading是啥原因

image

  • @陈扬帆-厦门-开发: 没连接上contract
  • @陈垚文-福州-医院: 首先打开console看看输出是什么。可能的问题,1. testrpc开了没?2. truffle migrate --reset 没?3. metamask有没有切换到private

Q5. @黄敏之-东京: 用truffle test的时候能直接对solidity 代码调试吗?另外请教下函数的estimateGas和函数执行返回值里的gasUsed有什么区别?我测试是gasUsed要更小些?

【打卡干货集锦】

今日话题

共识机制有哪些?是否有完美的共识机制?分析现有的共识机制优缺点,也可以结合现有的项目来说明。

优质回答

@郭子汉 CMU'18:

POW,用成果证明努力逻辑简单的机制设计,容错率50% 缺点是浪费能源,联合挖矿可能会对系统去中心化造成威胁
POS, 比拼余额,手里的币越多,挖到一个块的概率越大。 POS不过是个理念罢了,实现多种多样: 点点币PPC混合了POW和POS NXT另外一个例子,提出了透明锻造的概念 随后POS2.0, 3.0都提出了些改进 DPOS类似于现代企业董事会制度,持有币成为股东,股东选出代表, 代表负责产生区块
完美公式机制不存在

@我才是二亮:

pow:工作量证明,资源消耗,性能较低。 pos:权益证明,不耗费资源,但性能低。 dpos:委托权益证明:不耗费资源,性能高。 pbft:拜占庭,效率高,无需发币

@谭旭:

共识有:POW、POS、DPOS、(P、R、S等)xBFT、POET、POA、POB、POC、POI、POP等。我觉得去中心化最重要的一环就是共识机制,入门者多简单理解为挖矿或投票,其实每种共识都有很多种不同的实现方式并且还有混用的实现,记得在某微信群里V神就说过共识是区块链中很难的那部分,所以希望有兴趣的多多研究讨论,以后群里能出个共识算法的专家出来


每日优质内容复盘-2018.1.29

【重要通知】

@雅珣班长:

各位开拓者们,你们好呀 时间过得好快呀,咱们第二期课程快要结束了,我们准备在2月4日总答疑结束后举办结业仪式,也为本次课程画上一个完美的句号。

在你们忙碌的赶作业中,我也在为大家策划结业仪式的总体流程,其中有几个地方需要每个人都配合一下喔:

1.需要所有学员的个人生活照一张,用于你们的毕业证书。 要求:清晰度高,上半身照片or自拍都可以;

2.需要大家对本次课程有一段评价和反馈,以文字or图片or录音的形式。 如果你写字特别好看的话可以写在纸上然后拍下来; 如果你声音特别好听的话可以录一段音(不能用微信,建议手机录音);

麻烦各位学员抽出5分钟时间,今天尽快把以上两条发送给各小组组长,由组长统一打包发给我哈~

辛苦大家啦,尽快哟,设计小哥哥还等着你们的照片制作毕业证书呢 谢谢大家配合哈,晚安啦️️

【课程答疑】

Q1. @李涛: 这个函数,为什么后面还要跟上一个 ()?

  • @何智华: value(amount), gas(xxx), gasprice(xxx) 等是指定交易的参数。他们可以加到任何一个方法的自身函数参数之前。后边的括号才是方法自身的参数。

Q2. @李明: 李老师请教一个问题,web3调addEmployee函数,返回一个promise,这个promise的resolve(.then调用了),代表什么呢?A. transaction广播出去了,B. transaction至少被一个full node接受了,C. transaction至少被一个full node执行了,D. transaction已经写到区块链上了,得到了n个确认,E. 其他

  • @梁卫亮: 在测试链上试试呗 拿到返回数据之后 从ethscan上看看状态

  • @李明: 我说下我观察到的现象啊,addEmployee,如果在contract里revert,那js的addEmployee返回的promise,是被reject的。也就是,contract代码被执行了(不然怎么reject呢)

  • @黄敏之: 我猜D不对,因为我用call执行并没传到链上,一样能resolve

  • @李明: 如果是被一个full node“模拟执行”了,那就复杂了,因为这里就有三种可能了:

    1. 最终被commit到链上,且执行结果和这次“模拟执行”的结果一样(没有其他transation抢在前面)
    2. 最终被commit到链上,且执行结果和这次“模拟执行”的结果不一样(有其他transaction抢在前面)
    3. 最终没有被commit到链上
  • @高翔: 从这个可以看出,当收到transaction receipt的时候就会去调用resolve/accept

  • @李明: 收到receipt是什么意思,怎么定义?接受的node会跑代码么?必须跑,还是必须不跑,还是没有定义?

  • @高翔: 从code来看,指的是transaction is mined,准确说是已经mine了。

  • @李明: mined怎么定义呢?

  • @高翔: 我理解是指,transaction已经被写到区块链了,但是有没有得到确认那还不一定

  • @黄敏之: 我用geth跑的时候,不mine根本动不了的,一直感觉mine等同于执行。

  • @李涛: mined怎么定义,根据我刚才看视频的说法,应该是已经被确认的交易。

Q3. @李涛: hdwallet 是个什么东西?

【打卡干货集锦】

今日话题

区块链转账的手续费(矿工费)是什么?交易所收取的常见手续费是多少?区块链转账为什么会有延迟现象?区块链拥堵了该怎么办?

优质回答

@Yammy:

用户发起一笔交易,这笔交易会发送到区块链网络,旷工可以根据用户设置的gas price来优先选择一些交易来竞争挖下一个区块,如果旷工成功挖到下一个区块,旷工选择的这些交易的费用都归旷工所有,因此转账的手续费是为了让旷工帮你确认交易。 交易所收取的手续费除了要给旷工的确认费用,还有另外一部分是交易所收取的费用。 转账有延迟,也是因为需要旷工确认交易,拥堵是因为交易太多,旷工一时间来不及确认。

@bOOman64:

矿工费就是奖励给矿工帮忙打包转账记录的啊 交易所一般0.1%到0.2% 延迟是因为要等待网络打包和确认 拥堵了只能扩容或者开发新的技术

@大风封:

矿工费:矿工挖矿,把你这次交易打包进区块链的费用  …交易所不同的币交易费也不太一样,好像大部分都是0.5%上下吧…延迟是因为矿工要挖矿和打包交易,需要时间…拥堵了可以扩容,或者使用侧链

@G‘Knight 岩:

用户在比特币网络发起一笔转账时,一般需要支付给记账矿工一定的转账手续费。也叫矿工费。

转账手续费一般为0.001-0.0015个比特币。

由于区块能容纳交易记录的容量有限,所以当同一时间内,转账过多时,会出现拥堵和延迟。

区块链拥堵时,矿工会优先打包手续费高的交易,所以多付手续费可以更快被记账。

大致可以这样计算:成本 = F (交易费)+ T (确定费用的时间) + Ru (不确定性风险)。

@熊雄:

手续费一是为了奖励矿工提供的安全同时也是为了减少对网络的spam。交易所一般收取0.001做为手续费。区块链转账延迟一是因为区块挖取速度是随机的,例如比特币,平均是10分钟,但是也会偶尔30分钟出一个块,另外一个原因是因为区块真的满了,而你给的手续费又太低。区块链拥堵了最好的办法还是闪电网络,并不是所有的交易都必须在主链上settle的


每日优质内容复盘-2018.1.28

【重要通知】

@雅珣班长:

请大家注意哈,最近有不法分子在网上冒充“UGC Network” 及硅谷密探
大家务必擦亮双眼、提高警惕,不给不法分子以可乘之机

【优质课程资源】

【课程答疑】

Q1. @汪博: 有同学遇到这个问题吗,认为eth undefined。也认为后面的accounts[0]是undefined了 因为都没能获得

image

image

  • @张子栋: 你代码里面有this.web3this.state.web3,这个当然不行。web3应该是props传下来的

Q2. @齐明: 当前教的系统只是一个很简单的系统,当系统复杂之后整个系统的构架是怎样的呢?比如现在react,node在localhost上。当到live系统里这些前端代码都会部署在哪里呢

  • @董老师: 这些前端代码可以跑在一个web server上面,但是这个就很有意思了:难道这不就又成了中心化了么?但情况可能没有那么坏,首先,在很多情况下,是可以吧前端的code跑在本地的,这个本身并不是特别大的问题;其次,即使又web service在帮你host这个service,只要能做到“谁想host都能host,因为只是一个前端而已”,就是ok的

Q3. @齐明: 公司本身是中心话的,链是去中心话的,dapp在链上运营的时候gas等费用都给了矿工,那么公司本身的盈利模式在哪里?不能总指望通过币增值吧?

  • @高冰-助教: 币发行进入市场流通时 就已经开始“盈利”了。另外就是可以通过提供服务,比如ripple 跟银行收钱; ethereum以后也可以说我们不是所有的feature都免费开源的

【打卡干货集锦】

今日话题

你认为BAT在区块链中有哪些布局会很快影响我们的生活?为什么

优质回答

@Vincent.Lovelock:

知道腾讯有做区块链的基础建设。大厂应该会做区块链的基建并开放端口

@日三省吾身的夏君:

BAT开发的可能更多是私有链吧,或者联盟链,这样产生的影响毕竟有限,就像瑞波对于银行业的影响一样,只影响跨境交易这一个点。 我觉得BAT最垄断性的优势还是在他们掌握的数据上。数据交换是个不错的方向。比如之前看到GXS里面已经允许和Taobao有了数据交换的接口。这样形成的征信系统的改善对我们的生活会产生很大的便捷化。 比如你在JD刚注册了一个账户,可能在JD什么信誉都没有,但是通过数据交换和共享JD发现你在淘宝上的信誉非常好,那么在JD上也自然会产生很高的信誉度,哪怕你还没有一笔交易。

@李晨曦:

BAT能做贡献比较大的方面还是基础设施的建设,完善和解决区块链系统中遇到的技术问题,因为技术实力比大多数区块链公司要强很多。数据共享这方面短期内看不太现实,大公司在这方面还是比较保守的


每日优质内容复盘-2018.1.27

【优质课程资源】

【课程答疑】

Q1. @缪逸伦: 怎么删除metamask上的account?

  • @顺达-助教: 删account我记得好像没有,不过可以通过用助记词恢复钱包的方式
  • @Emma: 我记得有些account会显示loose的状态,这个怎么恢复?
  • @顺达-助教: loose指的是通过私钥方式导进去的account。这种用助记词恢复后会没掉,得再自己导私钥进去恢复

Q2. @张子栋: 为什么我addFund不用metamask能fire event,用了metamask就不行了,但fund都加成功了

  • @何智华-助教: 这儿有个BUG,再启动网页之后不要再metamask里切换网络,要先把metatask切到测试网络后,重启浏览器

Finally, Metamask seems to have problems switching networks cleanly. After switching to the network you want to use, try closing all open Chrome windows (not just the window you're using Metamask in) and then open the browser again from scratch.
https://ethereum.stackexchange.com/questions/28747/cant-retrieve-event-logs-with-metamask-web3

Q3. @封宣阳: 如果不想让metamask inject web3...那就一定要把metamask插件卸载掉么 ?

  • @张子栋: 可以disable插件或者App.js

Q4. @封宣阳: 使用truffle migrate部署合约到本地rpc的时候,是使用哪个以太账户部署的呢?accounts[0]吗?

  • @陈鹏:truffle.js中可以修改migrate的地址

from: From address used during migrations. Defaults to the first available account provided by your Ethereum client.
http://truffleframework.com/docs/advanced/configuration

【打卡干货集锦】

今日话题

比特币如果最终失败了,一文不值了,你认为最有可能的原因是什么?

优质回答

@谭旭:

更多交易所和交易网站上所使用支付用途的数字货币增多,比特币主要用途被抢占市场逐渐淡出主流市场;去中性化交易和实名系统流行,未加密的公开的账本成为了隐私问题;由于大量的屯币缺少流动性和挖矿矿场的系统化集中化,某国家或矿场足够发动了51%攻击;社区不统一一直分叉,直到有个新的分叉全面超过原链;或者一直保持现状直到出现更安全支持更高TPS的法定数字货币或稳定数字货币或匿名数字货币;或者中本聪被曝光,阴谋论或后门被发现;

@Bright:

以前贝壳,石头作为历史上的价值存储,后来变成黄金白银,是因为这是一个被更广泛承认的东西。比特币的价值取决于人们对其还有信任,也许某天会出现一种比比特币还值得信赖的东西吧。

@adang:

以前贝壳,石头作为历史上的价值存储,后来变成黄金白银,是因为这是一个被更广泛承认的东西。比特币的价值取决于人们对其还有信任,也许某天会出现一种比比特币还值得信赖的东西吧。


# 每日优质内容复盘-2018.1.26

【重要通知】

@班长晓杰: 通知内容

近日,我们发现有不法分子在网上冒充“UGC Network” 及硅谷密探 利用代投等名义公开募集资金。 请大家注意,UGC Network或硅谷密探不会以任何形式进行公开募资。请大家务必擦亮双眼、提高警惕,不给不法分子以可乘之机 硅谷密探及 UGC Network 对诈骗集团已经开展法律调查程序,将追究其法律责任。

@班长晓杰: 通知内容

明天的周六分享,智华助教临时有事,我们把时间改为下午2点了哈 主题:IOTA 基础介绍?主讲人:智华助教?时间:2018.1.27下午2点

@雅珣班长: 通知内容

嘿嘿嘿开拓者们: 咱们要搞大事情啦! “白帽黑客”团体挑战赛正在紧张有序的报名中。嗯,它也是你们的结业考试。 考试是检验学习的唯一标准~ 各位成员先填写报名表哈,然后找自己的小组组长口头报名一下,组长确定各组参赛人员和数量给到@雅珣班长

【优质课程资源】

【课程答疑】

Q1@谭旭: 比赛用的得用自己有eth的钱包么?

  • @董沫: 问题解答 随便一个钱包就好,不用有eth

【打卡干货集锦】

今日话题

分享一个你最了解的区块链项目or区块链技术~

优质回答

@Yammy:

Zcash 是建立在区块链上的隐私保密技术。和比特币不同, Zcash 交易自动隐藏区块链上所有交易的发送者、接受者和数额。 只用那些拥有查看秘钥的人才能看到交易的内容。用户拥有完全的控制权,用户可以自己选择性地向其他人提供查看秘钥。 Zcash 钱包资金分 2 种:透明资金、私有资金,透明资金类似比特币资金;私有资金加强了隐私性,涉及到私有资金的交易是保密不可查的,透明资金与透明资金的交易是公开可查的。 Zcash 使用一个被称为 zk-SNARK 的零知识证明架构,该架构是由经验丰富的密码学家团队 开发的。这个框架允许网络在不公开交易参与方或者交易数额的情况下维护一个安全的账户余额账本。Zcash 交易的元数据是加密的,而不是公开地展示交易参与方和交易数额,zk-SNARK 被用来证明没有人进行欺骗或者偷窃。

@LUZ:

ark智能桥梁,主要是提供跨链合约和易用的api,使用它以后不需要关心底层的eth,neo,eos,ipfs等等。 decent类似eos的dpos。围绕内容版权的公有链,编程主要用dcore的api.目前是可用的,且有项目在用它的技术。 lunyr,去中心化知识库dapp,有强大的产品设计,把代币功能用到了极致。是一个自循环的生态系统


每日优质内容复盘-2018.1.25

【优质课程资源】

【优质群内讨论】

@陆周_北京_学生: 刚好助教都在问下 合约账户和普通的账户在以太坊网络在存储的结构上有什么区别?合约中的属性 类似于数据库的一个字段嘛?

@王鲁明_助教: @陆周_北京_学生 合约中的属性指什么?

image

@陆周_北京_学生: 就这些东西..

@张子栋-MPK-SWE: 存储上应该没有区别吧,都是存在Merkle Patricia Tree里面

image

【打卡干货集锦】

今日话题

如果把以太坊的Dapp放在侧链上会是个好的设计么?

优质回答

@郭子汉 CMU'18:

image

每日优质内容复盘-2018.1.24

【优质课程资源】

【课程答疑】

Q1. @陈扬帆-厦门-开发: 和前端交互的时候,为什么这里要多传一个对象,这个对象是传给谁?谁接收?不是直接调用合约里的函数吗

image

Q2. @李兆琦-麦迪逊-学生: 想请教一下这种情况该怎么办?需要输入密码,正在尝试安装vscode

image

  • @蔡至诚: 密码就是 juicebox

Q3. @郭子汉-纽约-数据科学家: 我尝试了在migration的第二个file中省略deploy safe math和ownable文件,程序依然运行正常;求问,在migration中去deploy这两个file的主要目的是为了可能出错的情况做准备还是真的不需要添加这两个deployments?

image

Q4. @Gelei-硅谷-码农: 我跑testrpc的时候是 testrpc -l 900000 gasLimit很高的,但是想加员工就一直out of gas

  • @高承星: 调用addemployee的时候把gas作为参数传进去,设高一些。我记得我设了4000000才行
  • @齐明: 这里多加gas:

image

Q5. @张子栋-MPK-SWE: GitHub上面的代码没法run start, 提示node_modules missing

  • @邢亚铭-佛山-程序猿: 需要npm install

【打卡干货集锦】

今日话题

你觉得Solidity的哪些语法或特性需要改进?

优质回答

@郭子汉:

solidity语言吐槽

  1. uint x = 5 / 2; 这里 x 是 2,不是2.5,因为solidity没有float
  2. Ether可以被强制发送到一个账户里即使用revert()都无法prevent, 这存在潜伏的安全漏洞
  3. built-in global可以被shadow;这样contracts有能力去over-ride像msg或revert这样的函数
  4. 如果A使用了tx.origin用来authorizaition,另个合约可以call A合约并使得A合约去authroize一笔交易 (强烈建议 tx.orgini被remove)
  5. timstamp可以在12分钟内被miner操控
    详细内容可以参考 https://consensys.github.io/smart-contract-best-practices/recommendations/

@luz:

其他语言对solidity的调取方法的易用性和文档
开发环境ide太落后,需要增加易用,没有多余自身版本问题导致的错误。

稳定性,不要总是增加改动,前后版本不兼容

@张小胖:

没有接触那么深感觉很难评价。但是比较其他语言来看,社区是首先要提高的,用的人多了自然有大神来贡献。
我希望之后会有更多的lib(类似jquery之于js),脚手架项目,甚至框架。


每日优质内容复盘-2018.1.23

【重要通知】

@班长晓杰:

  • 今天正式官方的通知大家,硅谷密探从去年上半年开始探索区块链,在今天正式对外公布我们的区块链项目UGC Network,感谢亲爱的同学们一路陪伴,全新区块链社区启动在即,欢迎大家与我们一起发声!
  • UGC Network 是全球首个内容价值预测平台, 一个以公平和价值驱动的内容 激励网络。U 社区是建立在 UGC Network 上的首个数字资产内容平台。
  • UGC Network 的设计初衷是构建一个用户内容价值的预测市场,从而建立合 理的内容定价机制,让用户发现有价值的内容和信息,同时解决优质内容激励问 题。
  • U 社区建立在 UGC Network 上,是由内容生产者、内容发掘者、社区见证者 以及普通用户组成的数字资产内容社区,通过引入基于内容价值的预测市场,促 使 U 社区源源不断产生忠于用户利益的优质内容,帮助区块链爱好者做投资决策, 并且以一定的激励奖励内容生产者,发掘者,和见证者实现多方共赢,维护社 区良性发展。

【优质群内讨论】

@黄敏之-东京-码农:

  • 分享下windows下配环境方法,生命在于折腾,从此告别虚拟机
    1. 安装nodejs 和npm
    1. 安装git windows
    1. 安装python 2.7
    1. 安装vs 2013 express
    1. 打开lesson5作业origin目录
  • 从git bash中执行下列命令
  • npm install
  • npm install -g truffle ethereumjs-testrpc

【打卡干货集锦】

今日话题:你对区块链与人工智能的结合有什么看法?比如像深脑链这样的项目,你认为有发展前景嘛?

优质回答

@Fiona:

image

@磊:

image

@郭子汉 CMU'18:

image

每日优质内容复盘-2018.1.22

【重要通知】

@林杰: 通知内容

大家只需要实现removeEmployee, updateEmployee, addEmployee, loadEmployees, getPaid, checkEmployee 这些function即可。

【优质课程资源】

【课程答疑】

Q1@张宇: 请问一下在truffle console里用js对addFund这样的函数调用,怎么直接获取返回值,而不是获得一堆transaction信息?addFund里只有一句return this.balace;

  • @陆周: 问题解答 web3的sendTransaction是只能拿到 tx 的hash的;而 call 方法是在节点的VM中,直接执行消息调用交易,该交易不会将数据合并到区块链中,可以将其理解为调用合约的“读”方法。

【打卡干货集锦】

今日话题

你认为区块链领域技术上最值得研究的方向是什么?此方向的推进能给区块链的发展带来怎样的影响?

优质回答

@熊雄:

最值得期待的是密码学发展出更保护隐私更适合区块链应用的加密方法。现在各种币何其多,但是用的不外乎ECDSA, ring signature, shnorr 还有 zk snark。这些只是基础上的突破,是intellectual challenge,其他的都只不过是engineering effort。

@HZ:

现在整个行业(当然不包括为数不少的骗子,传销人马)都在推动社会全面接纳(mass adoption)。我们离这个目标还差什么?支付!社会接纳电子货币,不可能让客户在柜台刷卡,要等一分钟以上的confirmation. 这个行业总值要跨过10万亿美元(目前是不到一万亿),一定要跨过支付这关,因为任何货币本身一个是用来存钱,另一个就是用来买东西。那支付里面,最重要要过的关就是speed、scalability. 前者是速度要跟上,后者是说人多了速度也要跟上。

@laberat:

绝大部分新技术,都是率先在色情领域进行应用的。

@贾桂翀:

  1. scability,为了应用,这个性能必须达到应用程度;
  2. 匿名性,匿名币未来市场巨大;
  3. 协议层,协议才是区块链的核心问题,好的协议兼容性扩展性应用性好,差的应用窄的会被淘汰;

@蓝熊panda:

降低区块链性能和稳定性方面的门槛,对接现有的开发人员。只有这样整个生态慢慢能从互联网过渡到区块链来,有了这个基础再进行产品创新和研发,将会给区块链注入强有力的内在功力。


每日优质内容复盘-2018.1.21

【重要通知】

@班长雅珣: 上两周优秀作业排行榜出来啦,大家继续加油:

image

image

【优质课程资源】

【老董直播答疑】

Q1. 在solidity当中返回字符串数组?

  • 字符串在solidity当中比较特殊,因为它不是final的,即你不能提前知道一个字符串的大小
  • 实际上返回一个字符串是返回了一个字符串的长度和一个开始位置,然后开始一个一个一个一个读取整个字符串
  • 当字符串是一个数组的时候,整个字符串数组就变成了一个不定型,这样的类型是不final的

Q2. solidity app是不是一定要有一个域名?如果域名被墙了,是不是app就不能用了呢?

  • solidity最初的架构是你的整个后端都run在本地,本地有一个完整的ethereum node,所有区块链信息都在本地存储,最坏情况可以通过访问本地区块链数据来运行智能合约
  • 现实当中并不是每个人在机子上面都有一个全节点;所以确实有可能存在rpc endpoint被干掉了
  • 这个社区的理念是一个rpc endpoint被干掉了,千千万万个rpc endpoint会站起来
  • 在传统internet上,域名就是要把人类可读的名字转换成一个地址,在ethereum上,也有一个域名系统,叫ENS( http://ens.domains/ ),用一个人类可读的名字来代替一个非常长的区块链地址,地址很长,所以可用一个人类可读的名字代替
  • 区别在哪儿呢?ENS是分布式的,建立在区块链之上的,DNS则是各个运营商自己手里面的server
  • ENS域名是一个拍卖机制,建议大家去玩玩,选一个喜欢的域名,以后你跟别人说给我发钱,不用copy一段巨长的数字,直接把域名说出来就好
  • ENS也存在域名抢注这样的事,比如阿里巴巴之类的,现在已经有这样的注册和拍卖ENS域名公司
  • 老董的ENS域名:hardfork.eth

Q3. truffle版本问题

  • 大家可能按照课上过程去下载了最新版,这里是我们有一点小疏忽,当时录制时truffle版本和现在的版本是不一样的,有不同
  • 所以如果现在大家下载最新版本的镜像,truffle是安装好的,也是按照讲课时录视频时的版本安装的,大家不需要再去做整个truffle的安装过程

Q4. @谭旭: 看其他的智能合约的时候发现有的在solidity里使用了assembly,除了提升性能复杂度提升,请问使用assembly的优缺点有哪些?使用时有哪些需要考虑?

  • assembly能强烈地增强整个EVM执行的效率,因为solodity的编译器太烂了,有非常多的优化的坑
  • 但用assembly本身是非常危险的,举例:去年11月Parity钱包被黑掉了,好多钱都被锁起来了,Gavin Wood的Polkadot公司受到了严重影响
  • 这是为什么呢? 因为当时每个用户创建multisig wallet(是个挺大的合约)时花费太高了,他们不希望cost这么高,想把cost压下来,为用户着想
  • 但是,他们犯了一个天大的错误,他们的解决方法是先部署了一个非常巨大的母合约,包含了多签名钱包的所有业务逻辑和程序逻辑,相当于做了一个公共的库来使用,但又不是库,只是死在那边的一段代码;那么在一个新用户部署合约的时候,做code copy,所以部署合约本身的code量非常少,但要copy很多东西,而且每次有一个新的call来的时候,它只是做了一个interface,也储存了这个合约所需的所有数据,但所有code都是在runtime的时候去找已经部署的合约去执行,所以降低了合约的部署成本
  • 然而,有人发现之前部署的母合约居然也是可以调用一个合约的函数,于是他就把母合约干掉了,然后所有子合约都依赖母合约代码来执行,所以整个合约的钱就被永远锁在了里面,所以大家用assembly一定要注意,是个非常危险的事情

Q5. @luz: 我们pure,view这些东西什么区别,我们在作业时遇到了,然后老师在第一课时提到对函数是没有用的。

  • view就是constant,以前叫constant,现在叫view
  • view和constant都是保证这个函数不会对合约的状态做修改
  • pure则保证不但不会做修改,而且连这个函数的状态都不会读取
  • 但是没有卵用,因为solidity不会enforce这些,cost太高,这些都只是作为一个程序当中的警示/标识,在团队开发的时候给其他人看的
  • compiler会报警,但老版compiler可以过。所以这些都是意义大于实质

Q6. @luz: 研究plasma时,对它有一个理解:子链执行合约不需要根链节点做区块确认,根链是维持去中心化的.而子链负责效率.所以认为是共识的原因让以太坊所谓慢.不知道董老师怎么看待plasma,以及以太坊真正慢的原因是什么?

这部分内容较多,暂未整理,详情请看回看

Q7. @luz: 就是感觉,开发的东西都是和钱和交易有关的,所以怀疑dapp究竟可以干什么?

  • 人类经济生活都是和钱和交易有关的 【笑, 不过认真的说,只能合约平台,就是一个新的经济活动的引擎吧我认为

Q8. @Bright: 第四节课发现好多问题都是运行环境问题,我们怎么可以确定我们在自己test环境下开发的系统可以在production环境下顺利运行?另外随着环境的变更如果有一个contract运行了几年之久,会不会因为运行环境的变更突然就跑不了了?

  • 开发环境->生产环境这个步骤,需要不断的进步,solidity/smart contract技术栈还很浅,所以这方面还很匮乏。关于运行几年环境变了怎么办这个问题,这个涉及到EVM 升级的backward compatability的问题,EVM如果出现了不backward compatible的升级,是需要hardfork来migrate之前的合约的。

Q9. @ss: 董老师讲了很多大开眼界的知识,这些知识有哪些获取途径啊?想了解一些行业内正在发生的事情,有推荐的网上资源吗?

  • 都是零碎的吧,最主要的渠道可能就是ethereum官方的github里面的各种文档。最新的一些东西,就是跟Ethereum Foundation的人当面聊的了😂

本次答疑的Special Topic: 形式验证

这部分内容较多,暂未整理,详情请看回看

【打卡干货集锦】

今日话题

你们最想参与的打卡话题有哪些?

优质回答

@dig it:

各种币白皮书技术特色的介绍

@胡圣托:

比特币,以太坊的系统设计

@张小胖:

Dapp目前发展和应用的情况


每日优质内容复盘-2018.1.20

【优质课程资源】

【课程答疑】

Q1. @windse7en: C3_linearization 加分题求解释

对第三课C3_linearization还有疑惑的同学,可以看下这个Issue中的解答:https://github.com/linjie-1/guigulive-operation/issues/339

Q2. @熊雄: 为啥我装的truffle版本是v4.0.5的,truffle init出来的内容好少,跟视频内容完全不一致呀

image

  • @李明助教: 用truffle unbox metacoin试试,不要truffle init。版本问题是个很麻烦的事,董老师录视频的时候是比较老的工具版本。第一期课的时候,truffle已经到3.4.6了,测试可以完成课程作业(但也要unbox metacoin)

Q3. @学员2昵称: 请问有人知道为什么这个值一直是零嘛?我migration了,但是结果一支不对

image

  • @陆周: 这之前需要确保你的两个 ip地址和端口号的配置都对了,另外testrpc是启动的。还有truffle.js的配置要正确, 改成自己的testrpc的ip和端口:
networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    }
  }

Q4. @Emma: 请教大家一个问题,在装好react后 运行 truffle compile 有error 如下:

/payroll/contracts/SimpleStorage.sol:10:25: ParserError: Expected token LBrace got 'View'
  function get() public view returns (uint) {
                        ^
Compiliation failed. See above.
  • view是solidity高版本中加入的特性,而本地的solidity编译器版本比较低,不支持这个语法,所以会报错。把view删了就可以了

Q5. @李涛: 把上节课的payroll.sol从Remix部署到了虚拟机环境,addFund要怎么往里打钱啊?

  • @顺达-助教: truffle console里打钱是这样,payroll.addFund({value: xxxx}),可以在调函数的时候在花括号里设置参数。这里value的单位是wei,web3中有提供函数把eth转成wei: web3.toWei()

Q6. @李涛: 合约部署了,就是有owner了吗?这个owner地址,怎么看?

  • 顺达-助教: testrpc部署合约默认用accounts[0],所以owner也是accounts[0]

Q7. @Terry: 我可以compile migrate但是test过不了,从test调用payroll的function出错,说看不到

  • @何智华-助教: 如果之前已经运行过truffle migrate,并且migrations文件下没有新加一个migration文件而是重用并修改之前的2-deploy...js文件,那么修改后migrate要加参数--reset:truffle migration --reset

    http://truffleframework.com/docs/getting_started/migrations

Q8. 李涛: 说钱不够,这个要怎么处理?

truffle(development)> pr.addFund({value:web3.toWei(100)})
Error: Error: sender doesn't have enough funds to send tx. The upfront cost is: 100471238800000000000 and the senders account only has: 99830579499999958350
  • @何智华-助教: 测试网络默认每个账户有100 eth,这边addFund传的value是100 eth,再加上gas超过了账户的余额

Q9. 李涛: 这个返回值的几个 是什么意思?

truffle(development)> pr.calculateRunaway.call()
{ [String: '10000000000000000000'] s: 1, e: 19, c: [ 100000 ] }
  • @梁卫亮: bigNumber格式的 加.valueOf()可以转换成数字。js里面对非常大的数字支持不好,所以可以使用bignumber这个js库进行对大数的支持,所以web3在内部使用了bignumber。valueOf是bignumber的一个方法,就是取出对象里面的值

    http://mikemcl.github.io/bignumber.js/

@10. 李涛: getPaid 这个函数,在 console里,怎么调用? 要从owner地址切换到 employee地址上去

  • @梁卫亮: image

【打卡干货集锦】

今日话题

区块链的分工有哪些?它们是如何协同工作的?

优质回答

@胡圣托:

一级市场的核心为项目团队,早期投资者/机构和矿工,举个不恰当的例子,项目团队是项目的母亲,孕育孵化了项目,提供了项目未来发展的方向和潜在价值;早期投资者/机构和矿工是项目的父亲,早期投资者/机构以真金白银投入来支持项目成长,矿工则以挖矿投入来支持项目,挖矿产出的流通也证明了项目的商业价值。

一级市场中项目团队需要如INB、科银之类的早期投资机构,而矿工挖矿必须购买矿机和接入矿池,所以矿机厂商和各大矿池,都是一级市场的上游。

二级市场的核心为交易所、OTC交易所、普通投资人和投机套利者。交易所将项目团队孵化的项目上线,OTC交易所提供了场外交易的,提供了二级市场流通的机会,普通投资人通过自己的分析参与其中,提供给项目团队宝贵的资金支持,投机套利者的大量投机活动客观造成了币种的流动性。

一二级市场之外的媒体资源,也是行业的重要分工之一,他们是区块链行业的传播者,为行业发声,普及区块链技术的普世价值及实际意义,提供各种各样的行业资讯,制造话题、舆论,繁荣整个行业。

一级市场创造最原始的投资标的,投资标的的实际使用价值和未来的预期,决定了二级市场上的投资价值,而二级市场为区块链品种提供了流通机会,只有活跃交易的品种才能在流通中产生更多投资价值。

來源:简书

@熊雄:

有专业收智商税的,有建交易平台的,有挖矿的,有制订监管规则的,韭菜交完智商税后慢慢开始知道财富自由需要先提升自己,开始知道币不要放平台,开始知道庄家、矿场和监管部门如何勾结在一起攻击区块链行业

@蓝熊panda:

卖矿机的:提供设备 旷工:提供算力 交易所:提供交易场地 基础开发者:提供基础库 应用开发者:提供应用 投资者:带动资金流动,资金支持行业运转 使用者:使用区块链做转账等应用


每日优质内容复盘-2018.1.19

【重要通知】

@庞晓杰: 通知内容

周六预告来一波~ 北京时间周六上午10点,宝马来给我们做分享~ 主题:xmr白皮书 主讲人:助教刘芳璐 时间:30min

【优质课程资源】

【课程答疑】

Q1@王磊: 已经安装了truffle 4.0.5 想卸载 目前卸载不了

  • @陆周: 问题解答 sudo npm uninstall -g truffle可以卸载

Q2.@陆周: 没有转ether,每次刷新页面,就会弹出meta钱包支付页面,提交之后,页面The stored value is :5 ,刷新之后又变成0...又需要重新支付一边。

  • @李明: 问题解答 检测到metamask之后,用的account0,所以是0(看下代码第app.js 的59行)

Q3.@陆周: 在做dapp时,能保证数据这块的去中心化.都在以太坊上...但是作为入口的网站,需要有域名,web3.js虽然跑在前端,理论上可以连接任意的以太坊rpc节点. 但是想启动这个web3.js需要一个域名,如果域名被该怎么办? 做成app或桌面程序可以理解.. 但是域名这块有解决的办法吗?

  • @李明: 问题解答 从公网访问的网页,收到域名限制,手机上的app,收到app store限制。如果用这两类client端,的确有这种影响。 web3是一套协议,不一定要从网页访问,甚至不一定是js写的 https://github.com/ethereum/wiki/wiki/JSON-RPC

Q4. @申龙斌: 部署出错,Error: exceeds block gas limit

  • @梁卫亮: 问题解答 如果是 自定义下gasprice gaslimit 改大点 比如:testrpc -g 2000000000 -l 6721975

【打卡干货集锦】

今日话题

如何稳定数字货币和法币的兑换价格?

优质回答

@華晗:

数字货币与法币的关系一般来说遵循基本需求供给关系,要想得到稳定的汇率,需要数字货币的供给随着需求进行相应变化。 在发币系统里,中央银行会扮演调节的角色。在完全去中心化的系统里,这会非常困难。 根据稳定兑换价格的idea,stablecoin的概念被创造了出来。现实中的实践是Tether,理论上和美元1:1的汇率。 然而和现实中资产进行稳定兑换,需要项目拥有足够的抵押品,而这些抵押品一般是去中心化组织难以进行管理和受监督的。 Tether背后的美元抵押并没有透明和有效的监督,理论上存在风险 如果和一揽子数字资产进行挂钩,则依然会受到数字资产价格的波动。 总结:没有政府公信力的中心化机构的介入,和发币汇率相对稳定的数字货币会很困难(甚至几乎不可能?)

@HZ:

2017-2020数字货币需求不断升高,价格不断提高,购买力也不断提升 2021-2025数字货币兑换法币继续不断提高,但购买力趋于稳定,社会开始认识到法币不断贬值,而数字货币不贬值 2026- 2030各国法币全部数字货币化 2031- 2035因法币受数字货币影响波动过大,法币完全消失,各国直接使用数字货币

@Ye(alan)Zhang:

增发数字货币,维持一定的通货膨胀,降低数字货币被当成用于纯投资,对抗法币风险的金融工具的比例。 只有当数字货币真正成为被大部分认可的流通货币的时候,价格才能稳定

@申龙斌:

不用稳定数字币与法币的兑换价格,交给市场就行了,从根本上要转换观念,比如直接拿BTC当基础货币。 如果喜欢比较稳定的,可以找BITCNY、USDT、SBD等与法币锚定的数字货币。


每日优质内容复盘-2018.1.18

【重要通知】

@雅珣班长: 由于到今天为止大家还是时常出现作业提交错误,何智华助教在结构上画了一张图,辅助大家理解大家从结构上先理解作业提交的流程,然后结合视频加深理解,请务必理解这个框架
image

@雅珣班长: 各位开拓者请看下面的通知:

1) 对于Truffle本身的学习,我们的虚拟机镜像已经帮大家配置好了truffle, testrpc,npm等等版本,所以安装truffle,testrpc,npm,nvm的步骤都可以省略,请大家可以直接试运行truffle init,来产生标准的和视频讲解一样的metacoin工程

2)对于react的前端整合部分,因为react box在视频录制之后更新,所以很多东西都有一些小的变化,为了方便大家,请用以下这些步骤运行那个simple storage的例子:

  1. 下载官方虚拟机镜像(版本号:5.1.22)
  2. cp -r react-box payroll
  3. cd payroll
  4. npm install
  5. 打开第二个terminal,启动testrpc
  6. truffle migrate
  7. npm run start

3)关于作业 测试合约建议大家采用java script 因为写起来交互相对简单,Solidity本身的测试需要绕开各种问题,助教和老师讨论后,感觉并不是特别必要专门要求为了绕过这些东西而绕过,目前推荐大家使用javascript书写测试。

@Jennifer-班长: 为了减少同学们的麻烦,我们再公布一下规则哦,主动干货分享是有3次限额的,其他没有哦
大家来找我加分的时候,记得跟我讲清申请选修分的理由哦。有截图更好

【优质课程资源】

【课程答疑】

Q1. @申龙斌: 你们的vm可以正常启动吗?我这里遇到这个错误了
返回 代码: E_FAIL (0x80004005)
组件: MachineWrap
界面: IMachine {85cd948e-a71f-4289-281e-0ca7ad48cd89}
virtualbox是5.2.6,本机是windows7 64bit

Q2. @肖鹏: 我的电脑已经下过Oracle VM virtualbox ,安装我们课程的虚拟机要不要卸载原来的VM

  • @何智华: 不需要,只要保证 virtualbox 版本大于某个版本。我们课程下载的不是虚拟机软件,二是虚拟机里的镜像

其他. @林杰: juicebox 微云网盘下载 https://share.weiyun.com/9e267c7d979a4ca9841dd997dbc76aa9

Q3. @党鹏飞: 有个问题问你,就是通知中第二个事项中“1. 下载官方虚拟机镜像(版本号:5.1.22)”,官方虚拟镜机像具体指的是什么?

  • @Frank: 虚拟机软件的版本

Q4. @张亮: ova文件下载下来了 无法打开安装

  • @陆周: 安装Virtual Box,那个ova文件只是虚拟机的一个镜像

【打卡干货集锦】

今日话题

在中国要实现实体资产上链还需要克服哪些问题,现在被禁止的东西未来有可能放开吗?

优质回答

@申龙斌:

给政府多一点学习的时间,概念太新了,他们需要较长的时间适应。将来早晚会开放,互联网大潮来的时候,挡是挡不住的。

@Ye (Alan) Zhang:

理智和监管
理智:如果货币价格像现在这样飘忽不定,有多少商家会愿意承担上链交易的风险
法律监管:不要让去中心化让货币从少数人的“暴政”变成多数人的“暴政”

@熊雄:

首先需要克服“权利的傲慢”。想让某些阶层手握权力却不能为所欲为,这不是与虎谋皮的想法吗?现在被禁止的谷歌非死不可推特未来有可能放开吗?答案是否定的

@朱春雷:

要实现实体资产上链,即把实体资产变成数字资产,首先是要确定所有权的归属,然后是资产的评估,再是确保上链资产在交易流转过程中安全性,既保证透明性,又要考虑隐私保护。实体资产上链是大势所趋,在不久的将来就会开放,当然是在国家的监管下!

@谭旭:

虽然价值互联网的发展是大势所趋,但仅从REITs才刚获批就知道对国内类似的金融衍生品开放不要过度乐观,总体感觉中国的金融政策一向比较落后的,维稳第一的前提我们会有很长很久的路要走


每日优质内容复盘-2018.1.17

【重要通知】

@雅珣班长:

各位开拓者们,今晚就要更新咱们第4课啦,由于第4课要部署安装虚拟机,需要较长时间来下载,故提前放出来了:

【墙裂建议:由于虚拟机较大,下载时间较长,需要提前下载好】

1)国外同学/ 能翻墙同学戳 https://www.dropbox.com/s/bikdtta0ecw1l1r/juicebox-desktop-1.3.0%20Clone.ova?dl=0

2)不能翻墙的同学戳 www.chinatechstory.com/juiceboxClone.ova

温馨提示:由于虚拟机较大,下载时间较长,耐心等待呢
下载完成后,根据课程来进行安装部署哦~

【优质课程资源】

【课程答疑】

Q1. @梁卫亮-北京-开发: 在solidity如何返回字符串数组呢?返回值设置为字符串数组时报错:UnimplementedFeatureError: Nested dynamic arrays not implemented here。我看资料好像是因为,bytes和string底层实现就是数组,在使用string的数组,相当于是嵌套数组,solidity没有实现嵌套数组的返回。不知道我的理解对不。

  • @jonny-助教: 你说的应该是对的,这个现在不行

Not yet, as this requires two levels of dynamic arrays (string is a dynamic array itself).
http://solidity-doc-test.readthedocs.io/en/latest/frequently-asked-questions.html#is-it-possible-to-return-an-array-of-strings-string-from-a-solidity-function

Q2. @梁卫亮-北京-开发: 有使用truffle-contract调用合约里面入参为uint的方法吗? 一直报Error: new BigNumber() not a number: [object Object] 一直没解决

  • @黄敏之-东京-码农: 以前也遇到过,试下删掉所有编译文件重新compile migrate

【优质群内讨论】

@熊雄: 问一个技术的实现问题: 如果我有一个猛料要爆,现在有没有一种技术可以让我把资料加密之后放到区块链上,然后等到一定的时间之后(Timelock),自动解密。目的是就算在这段时间肉身挂了,爆料还是会在链上继续下去?

  • @Ellie-助教: 这不就是我的吃瓜链!我在研究定时的问题,ethereum上好像没有定时的概念吧
  • @熊雄: 定时是可以的,但是定时解密我没找到好的方案,相当于你要把私钥隐藏在公链当中
  • @Ellie-助教: 可以定时的话问题不就解决了吗?你定时发送一个tx,然后附上你的私钥。 https://ethereum.stackexchange.com/questions/42/how-can-a-contract-run-itself-at-a-later-time 看样子好像是只能依靠第三方来完成定时
  • @海罗沃德: 只能借助于oracle来定时触发,或者你本地写个scheduler job
  • @熊雄: @SVL-助教-Ellie 假定定时timeout的时候肉身已经挂了,没法发私钥了。遗嘱是在挂之前写的,挂了之后自动解密发布出来
  • @Ellie-助教: 我设想的是,定时意味着你要发送的信息是提前编辑好的,你只能控制发送时间,所以timeout的时候,你定时的信息还在。但是针对于吃瓜链,可以对信息除了控制发送时间以外,增添一个不发送功能,比如你的众筹小于公关费的话,取消发送(手动滑稽)

@吴昊-上海-学生: 请问,在区块链不可篡改问题中,如果我改了第k个区块链的交易,会导致第k+1个块的H(k)错了,所以为了掩饰,我还要修改k+1块的值,如此下去,会一直延续到最近的块,那为什么书上都反过来说,最后会追溯到创世区块? 谢谢!

  • @陈鹏-北京-银行dog: 我在看比特币的书的时候对这个也有疑惑。感觉应该是说错了,创世区块已是历史,后续的变化影响不到他。应该的意思是,没法篡改历史数据,直到最开始吧,可能是翻译的错了

  • @吴昊-上海-学生: 对,我也觉得很奇怪,讲道理应该不会影响之前区块的哈希值和数据才对,应该只会向后影响。原文讲的意思和翻译应该是一样的:

image

  • @王鲁明-助教: @吴昊 同学,英文得没有问题。那个beginning可能有点误导。beginning是指从用户的角度最近的一个hash值。你的理解是对的,该K就得该从K以後所有的区块,而且还要更改最后一个hash值,这个可能是用户自己记录下来的。如果是这样的话,就算你把所有K以后的区块都改了,也是无效的

【打卡干货集锦】

今日话题

如何判断一个区块链项目的价值? ———— 来自学员夏玮欹

优质回答

@熊雄:

首先看这个项目是否足够去中心化,因为生存是第一法则,只有去中性化的项目才能扛住各种打压顽强的生存下去。去中性化包括开发的去中心化,筹码的去中心化,以及网络的去中心化,缺一不可。去中心化是一个区块链项目的前提,不能做到去中心化的区块链项目就算各种特性做的再好,也只会是昙花一现。

@申龙斌:

还是把李笑来的判断准则搬过来重新温习一遍吧,感觉仍然有效:
这世界真的需要这东西吗?
它解决了什么原本没有被解决的问题?
去中心化在这件事儿上真的必要吗?
它真的必须账务公开吗?
账务公开的存在真的会提高它的效率吗?
它在多大程度上更接近一个 DAC (Decentralized autonomous corporation, 去中心化自治公司)?
如果我们决定投资,那么我们应该用我们资金的多大比例去投资?

@陈浩林:

如果解决了行业的痛点,并且不是圈钱跑路项目,那就有价值。但是解决的痛点,也必须是行业所需的,区块链化是必须的。如果这个行业区块链化后还不如以前,那就没价值。

@张小胖:

项目运用区块链是否能解决现有的问题。
项目团队是否靠谱,有没有技术牛人,学历,工作背景怎么样。
项目有没有得到投资,投资机构是什么。
项目是否有广泛的应用场景。
项目的白皮书写的如何,是不是画大饼,有没有学术风。


每日优质内容复盘-2018.1.16

【打卡干货集锦】

今日话题

你最看好的区块链项目有哪些?为什么?你是如何判断一个区块链项目的潜力?——来自学员罗霄提供的话题

优质回答

@Zidong:

Bitcoin, Ethereum, Ripple, Monero, RaiBlocks
看是否真正解决了实际问题
看是否有技术上的重要创新

@李晨曦:

eos,bluzelle,eth,ipfs,hcash,能解决区块链中存在的重要问题,且团队技术能力强大就比较有潜力

@陈鹏:

btc 这是我唯一能基本全部看懂,并且逻辑自洽,有成熟设计理念的项目。它规则足够简单并且高效,专注于数字货币体系的实现,考虑到了技术垄断及资本垄断的博弈,让各方在不断的争执中也可以使系统很好的运转下去,天才一般的发明

@谭旭:

区块链开发平台:ethereum、eos、cosmos、ada、dfinity
基础设施增强:匿名性zcash,存储ipfs、swarm,雷电网络raiden,可扩容自主智能合约plasma
去中心化交易结算:0x、stellar
稳定的数字货币:各国央行发行的发行数字货币,DGX,DAI
还有一些比较好落地的应用就不一一例举了
目前相当于互联网早期阶段,应该更关注基础设施项目和那些比较刚需的、好落地的应用,还要评估白皮书的可行性后期社区和代码进展。


每日优质内容复盘-2018.1.15

【重要通知】

@Jennifer-班长:

【积分明细·选修】
1、主动帮助同学解答了疑惑+1分/2分
2、主动群分享+3分/4分/5分(二期、一期、发烧友、直播群)
3、主动干货分享+1分/2分(每人限3次加分)
4、自行脑洞:一切对课程对同学有价值的事情都可以申请加分

大家有主动帮同学答疑的,和其他一切你认为有价值的事情,都不要忘了来找我加分哦
最后分数最高的两位同学是会获得全额减免学费的
最后小组成员积分之和最高的团队会获得一个ETH奖励

@Jennifer-班长:

开发课第一周同学们的积分情况来啦

第一名夏玮欹同学这一周得分15分(这位组长还经常给组员课程的相关时间进行提醒呢,让我们为他鼓掌)

第二名郭子汉同学得分14分,这位同学有好多优质打卡内容呢

并列第三名的谭旭、王磊、陈垚文同学得到了12分的好成绩

其他的小伙伴们要加油啦

image

image

【优质课程资源】

特别感谢 @夏玮欹 整理了周六分享的文字稿:以太坊白皮书解读

【课程答疑】

Q. @聪颖-深圳-打杂: 第二课作业添加10个员工,但是remix里只有5个地址咋整

  • @梁卫亮-北京-开发: 不用非得添加remix里的地址,可以自己随便构造地址
  • @聪颖-深圳-打杂: 我每次是改后面5个字符。因为没涉及到任何转账操作,也没做地址验证,所以 remix 里可以正常运行,不影响 gas 值计算

【打卡干货集锦】

今日话题

在区块链技术的淘金浪潮中,有什么支撑行业可能存在巨大的发展机会?(类似GPU行业之于AI浪潮的关系)

优质回答

  • @JASONews:

    区块链全栈编程培训行业

  • @Fancy:

    区块链技术有可能给云计算带来巨大机会。随着区块链技术成熟,标准化的blockchain as a service会成为传统行业采用区块链技术的切入点,云计算很自然成为很好的支撑行业。期待有一天部署区块链应用像启动aws的ec2一样便捷。

  • @華晗:

    数字资产高价将激励量子计算的长足进步。同时扛量子计算的加密算法也将更快出现及应用

    由于挖矿的激励,分布式可持续能源将会更便宜和普及。

    为了提升挖矿效率,芯片行业同样高速发展,GPU会更便宜,专有化芯片可能会用于其他行业,比如AI

  • @张小胖:

    硬件方面:挖矿设备(gpu,路由),冷钱包

    信息服务:项目分析,交易分析,相关信息的集中平台

    教育:区块链技术教育


每日优质内容复盘-2018.1.14

【优质课程资源】

感谢 @陆周 北京 学生 分享的一个优达上比较完善的free git课程

以及react的资料

【老董直播答疑】

Q1. 想问下solidity如何判断mapping里面是否存在某个key呀?以及return时候我可以返回一个mapping结构吗?以及return时候我可以返回一个mapping结构吗?

  • 只能通过查看这个mapping里面对应的key的值是不是那个值的类的默认值来决定。return map是做不到的。

Q2. function的内部运行原子操作,那么在function内部,多次获取now,会是相同的么?

  • now = 当前这个区块被创建的时候的timestamp,在程序中是不可靠的。设计到转账的操作尽量避免使用时间戳。

Q3. 函数里面有支付的语句:employee.transfer(),那为什么函数不加payable呢?

  • payable只在你调用这个函数的同时给这个合约付钱的时候才会加

Q4. transfer和send有哪些差别

  • transfer会抛出异常,send只会return true 或者是false。异常要自己捕捉。

Q5. 请问老师:solidity error handling中,什么时候应该用掉所有gas,什么时候应该吧没用掉的gas还给user?

  • assert()会消耗所有的gas,当你觉得,程序如果碰触到assert,一定是我程序出了大bug,那么你就应该消耗掉所有的gas

Q6. transaction cost 和execution cost的区别

  • trasnaction cost包括value trasnfer的cost,data transfer的cost,但是execution cost只限于合约执行

Q7. 一个contract能不能对不同的data specify特定的address才能访问,比如说我在不同的getter里面require不同的address. 但有一个问题是合约都是部署在public chain上面的,那合约中的storage是不是谁都可以看得到呢?

  • 隐私在公链上面是不存在的,因为都可以在storage里面看到,除非使用ZKSNARK/STARK

Q8. 在自己制作的网站中调取智能合约的函数如何才能不消耗用户的eth?比如能否预存一些eth给合约使用,就不要求用户通过metamask这样的插件提供eth了。

  • 这个比较复杂,需要存一定的ETH,然后让用户调用这个函数之后,这个函数返还ETH给用户

Q9. 实验环境每次消耗的总gas(transaction gas 和execution gas的和)是一定的,这个是为什么?

  • 因为你每次的gas limit是一样的哈

Q10. 能否仔细讲讲remove数组元素的过程Frank有个小技巧把要删除的元素赋值给数组最后一个值是怎么回事

  • 缩小length之后,相当于最后那个元素就被释放了

Q11. 刚解答第二个问题中提到,旧合约升级,旧数据迁移,具体是如何迁移的呢?

  • 做一个数据的snapshot,然后在数据合约当中,就要有设计好migrate的接口

Q12. 以太坊的地址是可以随便设置的吗?比如0x35256776ad344这样?btc有校验的,这样如果不小心,eth会打错地方

  • 不可以,公钥私钥都是配对的

【打卡干货集锦】

今日话题

你想讨论的打卡话题是?

优质回答

@优质回答者1:郭子汉

区块链技术的职业发展规划路线

@优质回答者2:波导

区块链技术开发都需要掌握哪些?如何成为区块链技术专家?如何研发一个区块链项目?相关区块链的技术研发岗位是如何分工协作开发的?区块链技术研发它的面试会考察那些知识和技能?

@优质回答者3:上山的o牛

普通区块链爱好者,或者开发者进入区块链行业最佳切入点是什么了

@优质回答者4:J

市面上的好项目。大家对2018看好哪些项目


每日优质内容复盘-2018.1.13

【重要通知】

@雅珣-班长:

⭐️福利福利⭐️

智能合约开发课一期的开拓者们每周六会在一期社群举办一场分享会,将围绕某热门区块链项目or技术问题等进行深入剖析。

同时每周一、周三、周五三天,上午10点,由分享者抛出一个基于【周六分享会】内容的话题,在社群中激发学员参与思考与讨论;

下周六的分享者是你们的王鲁明助教,他会做一个跨链项目的白皮书解读aelf,想来听听嘛?

若想参与分享会勾搭学长学姐请填写下方报名表噢

我将每期抽取五名同学加入到一期社群中参与分享会~

http://cn.mikecrm.com/E43DzPn

【优质课程资源】

@蔡至诚-助教 整理的第二节课相关的一些知识点和扩展阅读:https://github.com/linjie-1/guigulive-operation/wiki/Lesson-2-%E8%A1%A5%E5%85%85%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0

@海罗助教 做分享前发的几个视频:

@何智华-助教 分享的关于IOTA的文章:

【课程答疑】

Q1. @高翔-北京-码农: 请教个问题。既然delete其实就是个clear操作,那么46行的delete还有意义吗?

image

  • @王新文-伊萨卡-学生: 可以不用。delete在solidity里面是clear的意思。

“It is important to note that delete a really behaves like an assignment to a, i.e. it stores a new object in a.” http://solidity.readthedocs.io/en/develop/types.html

Q2. @陈扬帆: remix里的accoun数量只有5个,要怎么增加呀?

  • @海罗助教: 并不能增加,你在地址中随便改两个数字就行

Q3. Emma-湾区-数据攻城狮: assert()和require()是不是在编译后是一样处理的?那我们在使用的时候什么时候用assert,什么时候用require呢?

  • 触发assert()会消耗掉所有的gas,而触发require()会把剩余的gas返还

assert(false) compiles to 0xfe, which is an invalid opcode, using up all remaining gas, and reverting all changes. require(false) compiles to 0xfd which is the REVERT opcode, meaning it will refund the remaining gas.
https://ethereum.stackexchange.com/questions/15166/difference-between-require-and-assert-and-the-difference-between-revert-and-thro

Q4. @李子博-硅谷-SDE: 请问 transaction cost 和 execution cost 的区别是什么?

  • @Emma-湾区-数据攻城狮:

Transaction costs are the costs for sending the contract code to the ethereum blockchain, they depend on the size of the contract.
Execution costs should be really the vm execution costs, if I interprete the parameter vmResult correctly. https://ethereum.stackexchange.com/questions/5812/what-is-the-difference-between-transaction-cost-and-execution-cost-in-browser-so

【优质群内讨论】

海罗助教分享结束后的答疑

Q1. @申龙斌-山东: Siacoin怎么样呢?感觉也不错啊,去中心化的存储绝对 是将来的刚需吧?

  • @海罗助教: 去中心化的存储可以参考Hadoop,想象没有nameNode的Hadoop,什么样的数据需要存在Hadoop里。至于挖矿未来肯定是要被淘汰的,囤显卡囤矿机会跟囤BP机一样

Q2. @缪逸伦-研究生: 海罗助教对dag怎么看?相对于区块链来说的利与弊呢?

  • @海罗助教: 目前看IOTA,还没有解决他们中心节点问题,解决了这个问题的话是一个非常有前景的项目。可以想象一个场景,如果一个DAG项目出于完全利他目的建立,你的设备,你的账号在给其他的交易做验证提供算力的时候,获得一些代币,而这些代币可以通过IoT支付诸如停车费,以后你在停车的时候只需要大大方方的开车进去IoT验证了你的车,费用就缴清了

Q3. @王磊-哈尔滨-IT: iota目前技术还不成熟吧,最近被爆出漏洞怎么看?

  • @海罗助教: 技术都是在进步的,IOTA现在解决不了的问题,如果将来被解决了,或者被其他项目解决了,那么这个新项目就又符合最后一部分讲的那几个问题了,解决了没有被解决的问题

Q4. @陶沙-纽约-数据挖掘: 能不能随机指定coordinator?

  • @海罗助教: 原则上如果Tanggle用户量足够大,不需要coordinator,任意的两个节点就可以完成验证

【打卡干货集锦】

今日话题

以太坊是一种平台型区块链,在之上可以开发DApp。平台型区块链还有哪些?各有什么特点?

优质回答

  • 优质回答1:

image

  • 优质回答2:

image

  • @优质回答3:

image


每日优质内容复盘-2018.1.12

【优质课程资源】

  • 感谢 @夏玮欹 上海 银行IT项目管理 主动为大家整理的截止今天积分情况

【优质群内讨论】

Q1. 万维链的邮票技术和环签名映像的关联?

@Jennifer-班长: 邮票系统是另一个独立的技术。在万维链上跨链币的交易中,因为环签名会隐藏交易发出方的信息,从而找不到支付gas的人,所以才引入邮票系统,使得交易发出方在签名之前需要额外支付一份邮票的钱,之后再进行环签名。这份邮票的钱,其实就是需要支付gas的费用。

Q2. 万维链怎么跨链?

@陈杨帆-厦门-开发: 就是一条中介链

@Jennifer-班长: 对,其实就是个去中心化的交易所。想实现两条不同链的资产交换,还是得先转进他们的账户,然后才能用智能合约来进行兑换。

Q3. 去中心化交易所会不会是之前技术不成熟呢,所以不好做呢?难道现在的技术达不到 完全去中心化程序自动撮合嘛?

@海罗沃德-助教: 并不能,你想想撮合怎么撮合,是不是有个交易深度列表,这个列表在股票或者币的中心化交易所可以非常深,去中心化就要在所有节点上同步这个深度列表才能撮合交易,而每毫米都能挂无数单,撤销无数单,怎么同步,即便机器性能好,物理上的距离无法弥补。总要从一个节点同步到另一个节点,提过把节点都放在同一个屋子里,还不如直接中心化好了。

@韩博文-北京-矿工: 去中心的目的,是为了避免交易所作恶独裁

Q4. function的内部运行原子操作,那么在function内部,多次获取now,会是相同的么?

@梁卫亮-北京-开发: now是当前块的时间戳,所以应该在整个交易的生命周期中都是一样的 http://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=uint#block-and-transaction-properties

【打卡干货集锦】

今日话题

以太猫的流行,使得以太坊出现了非常大的网络拥堵,你怎么看待这件事呢?你觉得该如何解决这个问题?

优质回答

@优质回答者1:Bright

@优质回答者2:正在以肉眼可见的速度变胖

@优质回答者3:adang


每日优质内容复盘-2018.1.11

【重要通知】

@雅珣班长:
如果有特殊情况,请写请假条并补交作业!!!
以下为『请假条』:
可爱的班班,这是我本月的请假条——
请假人:组别+XX(昵称)
请假时间:第X周+第X次作业
请假理由:xxxxxx
承诺补齐时间:X月X日(承诺补交作业时间不超过两周)

【优质课程资源】

【优质群内讨论】

Q1. Remix里右侧run目录下的value是做什么用的?

@王鲁明-助教: 直接给contract充值

@陈俊杰-费城-BA: 支付给Frank具体多少工资就是从Value这里写进去的。

@梁卫亮-北京-开发: 以太坊上的一次外部调用其实就是一次交易,只要改方法有payable修饰符,就可以在调用这个合约方法的同时,给这个合约进行转账,这个value就是你要转账的金额

@王鲁明-助教: 创建合约对以太坊来说也是一次transaction,当你在创建的时候指定value的时候

Clone this wiki locally