其他分享
首页 > 其他分享> > 区块链技术与应用【肖臻老师】笔记整理之------22-ETH-智能合约

区块链技术与应用【肖臻老师】笔记整理之------22-ETH-智能合约

作者:互联网

注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术

智能合约是以太坊的精髓。

智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容。

智能合约的账户保存了合约当前的运行状态

Solidity是智能合约最常用的语言,语法上与JavaScript很接近

在这里插入图片描述

强类型语言,

mapping不支持遍历,需要自己记录hash表中有哪些元素

event事件,是用来记录日志的

有两种方式,第一种是与合约同名的函数,没有返回值,第二种是使用constructor函数

构造函数constructor只能有一个

如何调用智能合约

调用合约与转账类似,

A->B,如果B是外部账户那就是最普通的交易,如果B是合约账户,那么就相当于发起对B的合约的一次调用

具体调用的是哪个函数,是在数据域中说明的,data域

在这里插入图片描述

在这里插入图片描述

emit的作用就是写一个Log

一个交易只能由外部账户发起,而不能由合约账户发起,

另一种交易方式:

在这里插入图片描述

delegatecall():与call()的方法基本上是一样的,一个主要的区别是,Delegatecall()不需要切换到被调用的合约的环境中去执行,而是在当前的环境中执行就可以了。

在这里插入图片描述

以太坊中凡是接受外部转账的交易都必须标记为payable(),否则给这个函数转钱的时候会抛出错误异常。

在这里插入图片描述

没有别的函数可调用时就调用fallback()函数

如果fallback()函数不是payable的,那么别的函数向该合约地址转账会引发异常

只有合约账户才有这些智能合约

转账金额是0,但是Gas 不能为0,那是给Miner的,否则miner不会打包区块

在这里插入图片描述

JVM:增强可移植性

EVM:世界计算机,256位寻址空间

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

例子:简单拍卖

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

标签:肖臻,函数,22,Gas,智能,调用,------,区块,合约
来源: https://blog.csdn.net/qq_38123961/article/details/117092324