智能合约系列
文章平均质量分 80
介绍智能合约系列知识
搬砖魁首
区块链从入门到宁静
展开
-
区块链知识系列 - 系统学习EVM(四)-zkEVM
rollup顾名思义,就是把一堆交易卷(rollup)起来变成一个rollup交易,所有节点接收到这个rollup交易之后,不去执行被卷起来的逻辑,而只去接受这些逻辑的执行结果。因此这个rollup交易所需要的gas会远小于执行这些交易的gas。StarkNet这是 StarkWare 对 StarkNet 采用的方法,这是目前最先进的通用 Rollup。zkSync。原创 2023-02-16 00:02:51 · 1579 阅读 · 1 评论 -
区块链知识系列 - 系统学习EVM(三)-预编译合约
预编译合约是 EVM 中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,这些函数不适合编写操作码。它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。预编译合约是在使用节点客户端代码实现的,因为它们不需要 EVM,所以运行速度很快。由于 EVM 是一个基于堆栈的虚拟机,它根据交易所要执行的操作指令内容来计算 gas 消耗,如果计算非常复杂,在 EVM 中执行相关操作指令就会非常低效,而且会消耗大量的 gas。在 EVM 中执行这些操作是非常复杂和不现实的。原创 2023-02-10 00:05:07 · 700 阅读 · 1 评论 -
区块链知识系列 - 系统学习EVM(二)-存储与安全
特点EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的存储Codecode 部署合约时储存 data 字段也就是合约内容的空间,即专门存储智能合约的二进制源码的空间StorageStorage 是一个可以读写修改的持久存储的空间,也是每个合约持久化存储数据的地方。Storage 是一个巨大的 map,一共 22562^{256}22原创 2023-01-30 19:18:03 · 3585 阅读 · 5 评论 -
区块链知识系列 - 系统学习EVM(一)-架构与执行流程
EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”(这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中所需要的局部变量等数据,而不是指下文中所提到的“内存”数据;下文中的“内存”是一个与栈共同存在的、独立的临时存储空间。以太坊虚拟机(EVM)的架构和执行上下文。原创 2023-01-17 13:51:21 · 3730 阅读 · 1 评论 -
EOS系列 - WASM智能合约 - 特性
构造函数addressbook(name receiver, name code, datastream<const char*> ds):contract(receiver, code, ds) {}#单例表(code和scope都用receiver的表)也可在初始化列表中实例化singleton_example( name receiver, name code, datastream<const char*> ds ) : contract(recei原创 2021-08-16 19:54:13 · 1115 阅读 · 1 评论 -
Token系列 - 加密猫智能合约源码分析
GeneScienceInterface合约这个合约没有源码,从名字看已经很明显,就是猫的基因工程,用于决定新出生猫的基因。这里仅仅定义了一个接口,没有具体实现,后续的调用请看后续代码分析/// @title SEKRETOOOOcontract GeneScienceInterface { /// @dev simply a boolean to indicate this is the contract we expect to be function isGeneScience原创 2021-07-26 10:38:12 · 1922 阅读 · 1 评论 -
以太坊系列 - 智能合约开发与调试
本文默认智能合约所需要的相关环境Geth、Truffle、Solidity、Ganache等都是完备的!主要介绍:Remix IDE环境如何与指定的链进行连接;编译 部署与调试智能合约使用 zeppelin-solidity1.安装 Remix IDE npm install remix-ide -g网络资料相关内容都没有作特别强调,故在此特别说明一下:开发调试过程中,使用本地的环境相对而言,可以更加方便直观的与本地代码进行关联安装好remix-ide后,可以在任意路径下运行命原创 2021-05-05 13:05:40 · 2027 阅读 · 11 评论 -
EOS系列 - 合约数据表字段升级
各种加字段手法测试新老表差异表内数据升级手法CURD 结果解决方案最后加一个加字段无数据re-deploy加记录前查全表: OK 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: OK 删除新数据行: OK 加记录后查全表: OK 指定查新数据行: OK最后加一个字段有老数据re-deploy加记录前查全表: Fail 加记录(不带新字段): OK 加记录(带新字段): OK 加记录后查全表: Fail 指定查新原创 2021-03-31 11:54:31 · 821 阅读 · 4 评论 -
EOS系列 - EOSIO 2.1
EOSIO 2.1 RC中的新产品功能组成EOSIO堆栈的大多数创新都同样很好地支持公共和私有区块链部署。在EOSIO 2.1 RC中,我们引入了一项新的合规性功能,专门用于允许私有区块链系统管理员删除指定为上下文无关的数据而不会损害系统功能。EOSIO 2.1 RC还包括可优化区块链数据存储,简化表管理并为系统管理员提供集群选项的其他功能。此外,它还根据社区反馈更新了我们两个1.x数据导出工具的功能。关键值表键值API为开发人员提供了一种更加灵活,简化的方法来创建和搜索链表。开发人员还可以在创建表原创 2021-03-25 14:30:08 · 669 阅读 · 3 评论 -
密码学系列 - 零知识证明(ZKP) - 智能合约
智能合约实现匿名交易原创 2020-07-14 20:36:47 · 2689 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约学习笔记
(1)账户地址创建账号,无需上链,其实地址在链上非真实存在的,转账的接收方地址可以是任一符合规则的地址码,也能转账成功,只是没有人有与之匹配的私钥来操作此账户geth节点重启,上链的数据还是保存着的(2)合约内常用变量msg.sender 就是当前调用方法的用户地址this 指的是当前合约的地址address 支持各种算数运算符tx.origin 交易的发送者(3)函数的可见性 public external internal privatepublic :函数默认声明为pu原创 2021-02-19 14:12:24 · 1295 阅读 · 4 评论 -
以太坊系列 - Solidity智能合约 - 特殊变量与函数
Solidity自身携带的特殊变量以及函数:block.blockhash(uint blockNumber) returns (bytes32): 返回参数区块编号的hash值。(范围仅限于最近256块,还不包含当然块)block.coinbase (address): 当前区块矿工地址block.difficulty (uint): 当前区块难度block.gaslimit (uint): 当前区块的gaslimitblock.number (uint): 当前区块编号block.times原创 2020-06-01 09:26:59 · 1093 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约 - 设计模式与升级方法
设计模式合约分为两类控制器合约数据合约控制器合约控制器合约通过访问数据合约获得数据,并对数据做逻辑处理,然后写回数据合约。它专注于对数据的逻辑处理和对外提供服务。根据处理逻辑的不同,常见的有命名空间控制器合约、代理控制器合约、业务控制器合约、工厂控制器合约等。一般情况下,控制器合约不需要存储任何数据,它完全依赖外部的输入来决定对数据合约的访问。特殊情况下,控制器合约可以存储某个固定的...原创 2020-03-16 22:46:35 · 1136 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约 - 变量与函数
solidity原创 2020-03-09 22:42:16 · 691 阅读 · 1 评论 -
以太坊系列 - Solidity智能合约 - 多重签名
# 以太坊 多重签名以太坊根据自身平台特点采用智能合约实现多重签名功能,一般在钱包合约中实现该功能。原创 2020-02-24 21:14:27 · 3070 阅读 · 1 评论 -
以太坊系列 - Solidity减少gas消耗与字节码大小的小技巧
Solidity保存gas和减少字节码大小的小提示和技巧原创 2019-02-17 15:06:03 · 3372 阅读 · 4 评论 -
EOS系列 - 系统合约
eosio contract由3个部分构成nativeactionnativeactions是setcode, setabi, newaccount功能的函数集。这部分代码是hardcode在EOS系统代码里的,也就说不需要部署这一步骤,所以就解决了蛋生鸡,鸡生蛋问题。nativeaction是通过SET_APP_HANDLER注册的对应的函数名是apply_eosio_xxx,比如apply_eosio_setcode,apply_eosio_newaccounteosio.bios, eosi原创 2020-09-30 14:30:42 · 820 阅读 · 6 评论 -
EOS系列 - 解决升级EOS2.0 `env.set_proposed_producers_ex unresolveable` 问题
解决升级到EOSIO 2.0以上的版本之后, 部署eosio.bios或eosio.system会报错 Error 3070000: WASM Exception \ Error Details: \ env.set_proposed_producers_ex unresolveable 的问题v1.8和v2.0中引入的所有协议升级功能首先都需要 PREACTIVATE_FEATURE 激活特殊的协议功能此版本中包含的eosio.system和eosio.bios合同只能在激活 WTMSIG_BLOC原创 2020-05-26 00:25:06 · 1372 阅读 · 1 评论 -
EOS系列 - EOS-VM
EOS-VM原创 2020-02-03 17:02:27 · 1351 阅读 · 1 评论 -
Token系列 - Stable Coin
稳定币 (Stable Coin)中国金融科技青年论文(2019): <<区块链数字货币监管技术研究-以区块链稳定币为例>>稳定币的背景知识“数字稳定代币”(Stable Coin,也称稳定币)是使用区块链技术实现的一种特殊数字货币,通过和法币(或其他现实资产)保持相对稳定的价值关系,能够被用于作为法币和数字货币以及数字货币之间进行兑换的中介物,有效降低由于市场...原创 2020-01-04 00:51:55 · 1403 阅读 · 0 评论 -
EOS系列 - EVM和WASM的基本原理
了解EVM和EOS虚拟机基本原理EVM是以太坊图灵完备的虚拟机(Ethereum Virtual Machine), 简称EVM由程序翻译指令并执行EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数不支持浮点数缺乏标准库支持,例如字符串拼接、切割、查找等等都需要开发者自己实现给合约打补丁或是部分升级合约代码在EVM中是完全不可能的比特币的程序非常简单,由解锁脚...原创 2019-03-24 00:08:42 · 7018 阅读 · 0 评论 -
EOS系列 - WASM智能合约 - 内置方法
#高级EOSIO编程概念eosio::same_payerget_first_receiver,get_self()action_wrappertime_point, time_point_sec, microseconds原创 2019-10-16 15:54:30 · 1109 阅读 · 0 评论 -
EOS系列 - WASM智能合约 - 数据类型与RAM
EOS上编写智能合约的注意事项EOSIO支持创建智能合约,其执行和资源消耗的方式与在操作系统上运行的应用程序类似。智能合约使用C++编写并转换为WebAssembly。计算量和速度由带宽和CPU资源负责,持久信息的存储由RAM负责。只有在执行某些智能合约操作时才需要CPU和带宽,这些资源可以通过抵押Token获得。持久性资源RAM需要根据需求预先购买。RAM通常为易失性内存,但在...原创 2019-05-18 18:48:30 · 594 阅读 · 0 评论