• 【老董直播答疑】


    【老董直播答疑】

    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会打错地方

    • 不可以,公钥私钥都是配对的
  • 相关阅读:
    【转】使用外部看门狗请三思!
    【转】一招解决MCU启动异常
    【转】电源芯片选型,容易忽略的“QC”
    【转】为什么 MQTT 是最适合物联网的网络协议
    【转】中国芯酸往事
    函数输入参数类型为枚举时,则限定函数参数的接收范围,非枚举值输入则错误
    函数形参为指针与非指针的区别
    【转】函数中的形参问题(指针形参、引用形参、二重指针作为形参)
    【转】Example of using the --info linker option
    【转】STM32
  • 原文地址:https://www.cnblogs.com/x-poior/p/10267470.html
Copyright © 2020-2023  润新知