草庐IT

Solidity教程一

全部标签

以太坊Solidity合约动态部署合约策略

1.引言在Solidity合约中动态部署合约的方案有:1)Wormhole1.0中的deployWrappedAsset:https://github.com/certusone/wormhole/blob/v1.3.0/ethereum/contracts/Wormhole.sol#L2122)OpticsBridge中的_deployToken:https://github.com/celo-org/optics-monorepo/blob/main/solidity/optics-xapps/contracts/bridge/TokenRegistry.sol#L1742.Wormhol

一起学solidity写智能合约——地址类型(address)

前言在区块链中说地址重不重要,其实会被笑,然后会让你去恶补一下知识点,哈哈哈哈哈哈,地址可以没有区块链,但是区块链不能没有地址,这句话不是开玩笑。地址类型是在以太坊的诞生之后出现的一个特有类型,他是一个大小160位的二进制数字在地址中我们可以说有很多用处,比如加密,私钥是一个32个字节的数,也就是256位的进制数,也就是64位的十六进制数公钥则就是有私钥生成的,如何理解公钥和私钥呢,公钥就是锁用来加密,私钥就是钥匙用来解锁那么区块链中的地址,一般就是把公钥通过哈希256算法之后,将他后面的160位生成16进制字符串,并且加上了0x的前缀,16进制字符串是40个字符,再加上0x就是42位,这就是

28. solidity 哈希函数: Keccak256

28.哈希函数:Keccak256哈希函数(hashfunction)是一个密码学概念,它可以将任意长度的消息转换为一个固定长度的值,这个值也称作哈希(hash)。solidity最常用的哈希函数keccak256。Hash的性质一个好的哈希函数应该具有以下几个特性:单向性:从输入的消息到它的哈希的正向运算简单且唯一确定,而反过来非常难,只能靠暴力枚举。灵敏性:输入的消息改变一点对它的哈希改变很大。高效性:从输入的消息到哈希的运算高效。均一性:每个哈希值被取到的概率应该基本相等。抗碰撞性:弱抗碰撞性:给定一个消息x,找到另一个消息x'使得hash(x)=hash(x')是困难的。强抗碰撞性:找

Solidity基础八

别慌,月亮也在大海某处迷茫 目录一、Solidity编程风格1.代码布局 2.代码中各部分的顺序3.命名约定二、Solidity智能合约编写过程1.solidityHelloWorld2.版本声明3.导入声明4.合约声明三、Solidity合约结构智能合约Test四、Solidity常见编译错误五、Solidity调用合约1.调用内部合约2.调用外部合约通过接口方式调用通过签名方式调用签名方式调用,发送Eth六、Solidity自毁合约selfdestruct1.销毁合约示例2.强制发送资金示例七、Solidity哈希算法keccak256 八、Solidity权限控制合约十、Solidity

第四章 以太坊智能合约solidity介绍

Solidity是一门面向合约的、为实现智能合约而创建的高级编程语言,设计的目的是能在以太坊虚拟机上运行。本章大概介绍合约的基本信息,合约的组成,语法方面不做过多的介绍,个人建议多阅读官方文档效果更佳,后续的章节会开发ERC20代币合约案例以便于更好的学习智能合约的开发官网文档:https://docs.soliditylang.org/en/v0.8.12/中文文档:https://learnblockchain.cn/docs/solidity1、第一个合约介绍我们来看一个最简单的存取整形数据的合约代码//SPDX-License-Identifier:GPL-3.0pragmasolid

solidity数组

数组类型Solidity支持两种数组:静态数组和动态数组。又分storage与memory型数组uint[]memorylist;//变长memory数组,使用前必须确定长度list=newuint[](a);//然后再使用,一般用在函数内memory型数组不能使用pop,push也不能修改length静态数组//固定长度为2的静态数组定义uint[2]fixedArray;//定长数组实例化fixedArray=[4,6];静态数组不可新增元素,但可修改现有元素的值。动态数组动态数组,长度不固定,可以动态添加元素。//声明uint[]dynamicArray;//初始化,这里实例化一个长度为

solidity数组

数组类型Solidity支持两种数组:静态数组和动态数组。又分storage与memory型数组uint[]memorylist;//变长memory数组,使用前必须确定长度list=newuint[](a);//然后再使用,一般用在函数内memory型数组不能使用pop,push也不能修改length静态数组//固定长度为2的静态数组定义uint[2]fixedArray;//定长数组实例化fixedArray=[4,6];静态数组不可新增元素,但可修改现有元素的值。动态数组动态数组,长度不固定,可以动态添加元素。//声明uint[]dynamicArray;//初始化,这里实例化一个长度为

【Solidity学练系列1---搭建僵尸工厂】

备注本文绝大部分是直接从搭建僵尸工厂的一个以闯关学习Solidity相关知识的(国外?)网站抄写下来的,该网站自带sodility编辑器,而且每章节都必须按照实战演习的内容完成测试才能进入到下一章节,非常适合用一定编程基础的小伙伴自学solidity编程我整理这篇文章,一是分享觉得好的solidity学习资源给大伙;二是重新学习下solidity;三是整理上述网站的学习内容,让我自己找起来方便;上述网站是开源的,如本篇内容有侵权,可联系本博客删除;好记性不如烂笔头,抄一遍等于过一遍脑子,比扫一遍或看一遍的效果好的多得多;最后demo的步骤序号与标题序号一致,如果哪个步骤忘了具体含义,可查看对应

Solidity迁移Flow Cadence指南13-Flow 1000+合约大数据分析

熟读唐诗三百首,不会做诗也会吟,Flow合约哪里读?自然是链上了,Flow的链上合约都是开源的,只要知道合约地址,都可以直接使用API获得具体的合约代码。本节就把flow链上的主要合约下载下来,然后分析,哪些可以读,哪些可以抄@#¥@#¥数据来源本文主要分析合约账号数据,在以太坊中,可以通过地址的code类型来判断是否为合约地址,Flow中也是类似的,Flow账号的数据结构如下所示:messageAccount{  bytesaddress  uint64balance  bytescode  repeatedAccountKeykeys  mapcontracts}因此,我们也可以通过获取a

solidity最全开发详细语法解释以及示例说明

1.定义事件event2.调用事件呃,emit3.external--只能外部读取4.pure--纯函数(不能读不能写状态变量,只能有局部变量,完全不对链上有任何操作)5.returns()--返回(括号是参数返回类型)6.address地址类型7.view--只读方法(读链上)–不消耗gas8.pure--不会读链上9.constant--把状态变量变成常量(常量后变大写命名名称)有助于省gas费–不需要修改的值定为常量10.判断/require(i10”)|revert(在if里面写判断)\assert--断言进行测试,不包含错误信息11.modifier–函数修改器(可做公共功能,里面的