热点新闻
solidity学习
2023-10-03 19:20  浏览:516  搜索引擎搜索“广企汇”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在广企汇看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

solidity 基础学习网址: http://www.17bigdata.com/study/programming/solidity/solidity-address-token.html

storage 与memory区别:

二者都是用来存储变量,storage 变量永久保存在区块链中,memory保存在内存中,合约调用后被删除。

keccak256:

为了隐藏起某些信息,且保证这些信息不被篡改,需要用到哈希算法。keccak256算法则可以将任意长度的输入压缩成64位16进制的数,且哈希碰撞的概率近乎为0.

encode和encodePacked:

encode函数返回的都是bytes,也就是将参数编码成字节后返回.
encode()编码后的结果比较“复杂”,并且每个数据都用32个字节表示,不足的部分全部补0.

modifier函数修改器

下横线 类似java的切面编程,放在 代码后面代表先执行修改器条件, 放在代码前面标识先执行代码

modifier modifierfunc(uint256 value){ require(value >= 10); _; }

Solidity 的三种调用函数

call:

最常用的调用方式,调用后内置变量 msg 的值会修改为调用者,执行环境为被调用者的运行环境(合约的 storage)。
call()的返回结果是一个bool,表示是否成功的调用,或者是失败引起了EVM异常。该方法无法直接访问函数返回结果(因为需要事前知道编码和返回结果大小)
A call B , 结果保存在B

delegatecall:

调用后内置变量 msg 的值不会修改为调用者,但执行环境为调用者的运行环境。
假借B的手,调用了B合约的方法,但是修改了的却是A合约的变量.

callcode:

调用后内置变量 msg 的值会修改为调用者,但执行环境为调用者的运行环境。

匿名函数

  1. 匿名函数:没有函数名,没有参数,没有返回值的函数,就是匿名函数
  2. 当调用一个不存在的方法时,合约会默认的去调用匿名函数
  3. 匿名函数一般用来给合约转账,因为费用低

payable

该关键字代表我们可以通过这个函数给我们的合约充值,参考 :https://www.cnblogs.com/zhanchenjin/p/17653827.html

solidity中的全局变量

block.blockhash(uint blockNumber) returns (bytes32):指定区块的区块哈希——仅可用于最新的 256 个区块且不包括当前区块;而 blocks 从 0.4.22 版本开始已经不推荐使用,由 blockhash(uint blockNumber) 代替 block.coinbase (address): 挖出当前区块的矿工地址 block.difficulty (uint): 当前区块难度 block.gaslimit (uint): 当前区块 gas 限额 block.number (uint): 当前区块号 block.timestamp (uint): 自 unix epoch 起始当前区块以秒计的时间戳 gasleft() returns (uint256):剩余的 gas msg.data (bytes): 完整的 calldata msg.gas (uint): 剩余 gas - 自 0.4.21 版本开始已经不推荐使用,由 gesleft() 代替 msg.sender (address): 消息发送者(当前调用),如果是在合约的构造函数里面,则msg.sender 指的是 合约的部署者, 参考:https://codeleading.com/article/1979777712/ 以及 http://www.17bigdata.com/study/programming/solidity/solidity-this.html msg.sig (bytes4): calldata 的前 4 字节(也就是函数标识符) msg.value (uint): 随消息发送的 wei 的数量 now (uint): 目前区块时间戳(block.timestamp) tx.gasprice (uint): 交易的 gas 价格 tx.origin (address): 交易发起者(完全的调用链)

transfer

从合约发起方向某个地址转入以太币(单位是wei),地址无效或者合约发起方余额不足时,代码将抛出异常并停止转账,send方法只会返回false,不会抛出异常。

// 从合约发起方 向 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c 地址转入 msg.value 个以太币,单位是 wei function deposit() payable{ address Account2 = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c; Account2.transfer(msg.value); }

教程参考:https://blog.csdn.net/aiwaston/article/details/117307132?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-117307132-blog-128999880.235v38pc_relevant_anti_t3_base&spm=1001.2101.3001.4242.1&utm_relevant_index=3

发布人:b9d6****    IP:117.173.23.***     举报/删稿
展会推荐
  • 2023-10-03浏览:481
让朕来说2句
评论
收藏
点赞
转发