-
【老董直播答疑】
【老董直播答疑】
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的和)是一定的,这个是为什么?
Q10. 能否仔细讲讲remove数组元素的过程Frank有个小技巧把要删除的元素赋值给数组最后一个值是怎么回事
- 缩小length之后,相当于最后那个元素就被释放了
Q11. 刚解答第二个问题中提到,旧合约升级,旧数据迁移,具体是如何迁移的呢?
- 做一个数据的snapshot,然后在数据合约当中,就要有设计好migrate的接口
Q12. 以太坊的地址是可以随便设置的吗?比如0x35256776ad344这样?btc有校验的,这样如果不小心,eth会打错地方
-
相关阅读:
【转】使用外部看门狗请三思!
【转】一招解决MCU启动异常
【转】电源芯片选型,容易忽略的“QC”
【转】为什么 MQTT 是最适合物联网的网络协议
【转】中国芯酸往事
函数输入参数类型为枚举时,则限定函数参数的接收范围,非枚举值输入则错误
函数形参为指针与非指针的区别
【转】函数中的形参问题(指针形参、引用形参、二重指针作为形参)
【转】Example of using the --info linker option
【转】STM32
-
原文地址:https://www.cnblogs.com/x-poior/p/10267470.html
Copyright © 2020-2023
润新知