自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (8)
  • 收藏
  • 关注

原创 如何使用remix验证已部署的合约(以Goerli测试网为例)

手把手教学验证链上智能合约

2022-11-09 23:40:52 2192 1

原创 如何在opensea批量发布NFT(Goerli测试网)

如何在opensea批量发布NFT

2022-07-05 23:38:30 1983 8

原创 如何Remix-IDE添加本地项目?

如何Remix-IDE添加本地项目?一、remixd让 Remix IDE访问计算机上的文件夹,需要使用Remixd插件1.打开终端,全局安装:npm install -g @remix-project/remixd2.查看版本remixd -v3.启动remixd并将与 Remix IDE 共享给定文件夹remixd -s <absolute-path-to-the-shared-folder> --remix-ide <your-remix-ide-URL-ins

2022-01-12 10:48:42 619

原创 如何使用standard-input-json验证Solidity源码?

使用 standard-input-json验证合约(以BSC测试链为例)

2022-01-11 17:08:01 10459

原创 web3.js查询和修改链上的合约数据

web3.js

2022-01-06 18:02:22 13766

原创 Hardhat 获取合约编译后的文件大小

Hardhat Contract Sizer

2022-01-05 11:48:19 6631

原创 Solidity代码规范(官方建议)

Style GuideThe goal of this guide is not to be the right way or the best way to write solidity code.本指南的目标并不是编写稳定性代码的正确方法或最佳方法。1. 在一个solidity源文件中,合约与合约(或库、接口等)空两行。// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.4.0 <0.9.0;contract A {

2022-01-04 14:02:09 2339

原创 使用Hardhat验证 Solidity 源码 (Ethereum or BSC)

hardhat-etherscan

2021-12-31 15:35:28 9539

原创 Solidity-struct Gas优化(1)

结构体状态变量两种初始化Data public _data0 = Data(123, 456, true);Data public _data1 = Data({ tokenId: 123, price: 456, state: true});Gas消耗对比// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 <0.9.0;contract TestStruct { struct Data {

2021-11-22 21:17:24 3630

原创 Parser Tree Inspector窗口黑屏的解决办法

Java环境下,使用antlr.v4生成语法树,Parser Tree Inspector窗口黑屏的解决办法情况描述环境:window10 、IntelliJ IDEA编辑器、Java 1.8使用antlr4生成语法树图;但有时Parser Tree Inspector窗口在系统任务栏显示但打不开的情况(黑屏)。解决办法鼠标移到任务栏中所对应窗口 ,使其缩略图显示鼠标移至缩略图,右键选择最大化或还原...

2021-08-21 11:12:12 274 2

原创 以太坊Geth私链环境搭建

Ubuntu环境安装Geth:sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum查看geth版本dell@dell-VirtualBox:~/dapp/course$ geth versionGethVersion: 1.9.25-stableGit

2020-12-20 16:19:40 2307

原创 LeetCode 226. 翻转二叉树 *

翻转一棵二叉树。测试用例示例:输入:输出:解题思路递归这是一道很经典的二叉树问题。显然,我们从根节点开始,递归地对树进行遍历,并从叶子结点先开始翻转。如果当前遍历到的节点 rootrootroot 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 rootrootroot 为根节点的整棵子树的翻转。Code/** * Definition for a binary tree node. * public class TreeNode { * int

2020-09-16 18:35:29 87

原创 LeetCode 102. 二叉树的层次遍历 **

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。测试用例示例:二叉树:[1,2,3,4,null,6,7]返回其层次遍历结果:[[1],[2,3],[4,6,7]]解题思路广度优先搜索首先根元素入队当队列不为空的时候求当前队列sis_isi​的长度依次从队列中取sis_isi​个元素进行拓展,然后进入下一次迭代它和 BFS 的区别在于 BFS 每次只取一个元素拓展,而这里每次取sis_isi​个元素。在上述过程中的第

2020-09-15 16:23:21 109

原创 LeetCode 20. 有效的括号 *

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。测试用例示例1:输入: “()”输出: true示例2:输入: “([{}])”输出: true示例3:输入: “)()[]{}”输出: false解题思路栈判断括号的有效性可以使用「栈」这一数据结构来解决。我们对给定的字符串 s 进行遍历,当我们遇到

2020-08-14 21:59:10 198 2

原创 LeetCode 43. 字符串相乘 **

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:测试用例示例:输入: num1 = “3”, num2 = “4”输出: “12”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。解题思路乘法令 m

2020-08-14 20:44:41 124 1

原创 LeetCode 5. 最长回文子串 **

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。回文:字符串对称。“abba” "aba"测试用例示例1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例2:输入: “abbc”输出: “bb”解题思路动态规划对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串 “ababa”,如果我们已经知道 “bab” 是回文串,那么 “ababa”

2020-08-12 22:06:34 124

原创 LeetCode 130. 被围绕的区域 **

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。测试用例示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元

2020-08-11 21:13:23 94

原创 LeetCode 696. 计数二进制子串 *

给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是组合在一起的。重复出现的子串要计算它们出现的次数。测试用例示例1:输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例2:输入: “10101”输出: 4解释: 有4个子

2020-08-11 17:35:40 107

原创 LeetCode 93. 复原IP地址 **

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255之间组成),整数之间用 ‘.’ 分隔。测试用例示例:输入: “11101”输出: [“1.1.10.1”, “1.11.0.1”, “11.1.0.1”]解题思路IP 地址正好由四个整数(每个整数位于 0 到 255之间组成)。有效IP地址 4 - 12位,暴力三循环将IP地址位分成四个字段。即:[0, a), [a, a + b), [a + b, a + b

2020-08-09 21:35:28 138

原创 LeetCode 3. 无重复字符的最长子串 **

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。测试用例示例 1:输入: “abcabcdb”输出: 4解释: 因为无重复字符的最长子串是 “abcd”,所以其长度为 4。示例 2:输入: “aaaaaaa”输出: 1解释: 因为无重复字符的最长子串是 “a”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子

2020-08-08 15:42:40 166 1

原创 Java日常刷题基础小结(2)

length, length() 与 size() 的区别关于length它针对的是对象是【数组】它是【属性】String [] array = {"str1","str2","str3"};System.out.println(array.length); //3关于length()它针对的是对象是【字符串String】它是【方法】String string = "string";System.out.println(string.length()); //6关于size

2020-08-07 21:08:32 107

原创 LeetCode 2. 两整数相加(链表) **

给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。测试用例示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路本题我们只需要模拟逆向「竖式加法」的过程。将相同数位对齐,

2020-08-07 17:45:12 206

原创 LeetCode 100. 相同的二叉树 *

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。测试用例示例 1:示例 2:解题思路深度优先遍历当两棵树的当前节点都为 null 时,返回 true当其中一个为 null 另一个不为 null 时,返回 false当两个都不为空但是值不相等时,返回 false当满足终止条件时进行返回,不满足时分别判断左子树和右子树是否相同时间复杂度:O(n),n 为树的节点个数Codeclass Solut

2020-08-07 15:16:04 160

原创 LeetCode 392. 判断子序列 *

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。测试用例示例 1:s = "abc", t = "ahbgdc"返回 true.示例 2:s = "axc", t =

2020-08-05 21:29:25 103

原创 Java日常刷题基础小结(1)

charAt(int index) 方法java.lang.String.charAt();public char charAt(int index);index:字符的索引值。 索引范围是从 0 到 length() - 1。返回值:字符串中索引index所指的char值。 String A = "abcdef"; char a = A.charAt(0); // a = 'a'; System.out.println(a);...

2020-08-05 19:33:16 197

原创 LeetCode 415. 字符串相加 *

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式测试用例输入: "99" "1" 输出: "100"解题思路本题我们只需要对两个大整数模拟「竖式加法」的过程。将相同数位对齐,从低到高逐位相加,如果当前位和超过 10,则向高位进一位。定义

2020-08-05 19:08:58 116 1

原创 LeetCode 410. 分割数组的最大值 ***

给定一个非负整数数组和一个整数m,你需要将这个数组分成 m个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)测试用例输入: nums = [7,2,5,10,8] m = 2 输出: 18 解释: 一共有四种方法将nums分割为2个子数组。 其中最好的方式是将其分为[7,2,5] 和 [10,8], 因为此时这两个子数组各自的和的最大值为18,在所有情况中最

2020-07-28 21:18:50 161 1

原创 LeetCode 64. 最小(大)路径和 **

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。测试用例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路动态规划由于路径的方向只能是向下或向右,因此网格的第一行的每个元素只能从左上角元素开始向右移动到达,网格的第一列的每个元素只能从左上角元素开始向下移动到达,此时的路径是唯一的,因此每个元素对应的最小路径和即为

2020-07-28 19:46:51 756

原创 LeetCode 1. 两数之和 *

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 (LeetCode)解题思路保持数组中的每个元素与其索引相互对应的最好方法是什么?哈希表。使用了两次迭代。1、在第一次迭代中,我们将每个元素的值和它的索引添加到表中。2、在第二次迭代中,我们将检查每个元素所对应的目标元素(target - nums[i])是否存在于表中。注意,该目标元素不能是 nu

2020-07-26 22:20:52 91 1

原创 Docker 镜像使用

Docker 镜像使用当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。下面我们来学习:管理和使用本地 Docker 主机镜像创建镜像列出镜像列表我们可以使用 docker images 来列出本地主机上的镜像docker images如下:各个选项说明:REPOSITO...

2020-01-06 16:25:38 180

原创 Python爬虫以太坊智能合约solidity

爬虫etherscan

2019-12-28 20:19:54 1507 10

转载 Smart contract security Papers

[SP’20]VeriSmart: A Highly Precise Safety Verifier for Ethereum Smart Contracts[SP’20]VerX:Safety Verification of Smart Contracts[VSTTE’19]solc-verify:A Modular Verifier for Solidity SC[Arxive]Smar...

2019-11-19 18:31:38 834 1

原创 LintCode 8. 旋转字符串

题目给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。样例样例 1:输入: str=“abcdefg”, offset = 3输出: str = “efgabcd” 样例解释: 注意是原地旋转,即str旋转后为"efgabcd"样例 2:输入: str=“abcdefg”, offset = 0输出: str = “abcdef...

2019-09-23 10:23:26 222

原创 LintCode 82.落单的数

题目给出 2 * n + 1个数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例 1:输入:[1,1,2,2,3,4,4]输出:3解释:仅3出现一次挑战一次遍历,常数级的额外空间复杂度解题思路异或位运算异或运算具有很好的性质,相同数字异或运算后为0,并且具有交换律和结合律,故将所有数字异或运算后即可得到只出现一次的数字。^是异或运算符,异或的规则是...

2019-09-20 10:48:24 126

原创 LintCode 2. 尾部的零

问题:设计一个算法,计算出n阶乘中尾部零的个数样例 1:输入: 11输出: 2 样例解释:11! = 39916800, 结尾的0有2个。挑战:O(logN)的时间复杂度解题思路:可以将每个数拆分成其素因子的乘积,可以发现,0是由2*5产生的,而5的数量一定小于2的数量,因此5的个数决定了结尾0的个数。只要计算n的阶乘中,5这个素因子出现多少次即可。Solution:p...

2019-09-20 10:01:23 126

原创 智能合约的相互调用(call,delegatecall,callcode)

智能合约的相互调用(call,delegatecall,callcode)在函数调用的过程中, Solidity 中的内置变量 msg 会随着调用的发起而改变,msg 保存了调用方的信息包括:调用发起的地址,交易金额,被调用函数字符序列等。三种调用方式的异同点:call: 最常用的调用方式,调用后内置变量 msg的值会修改为调用者,执行环境为被调用者运行环境(合约的 storage)。d...

2019-09-06 16:51:15 2176

原创 Oyente Code strucure

Code Structureoyente.py这是程序的主要入口点。Oyente能够通过以下输入分析智能契约:solidity programevm bytecoderemote contracts然后使用evm disasm ...命令将合约分解为操作码。然后,使用已分解的文件调用symexec模块,该文件对各种漏洞(TOD、时间戳依赖、处理不当的异常)的契约进行分析。sym...

2019-09-06 16:18:58 705

原创 Mythril(security analysis tool for EVM bytecode)

Mythril is a security analysis tool for EVM bytecode. It detects security vulnerabilities in smart contracts built for Ethereum, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains. I...

2019-09-06 10:46:06 908 1

转载 Ethereum智能合约静态分析(上)

概述目前,以太坊智能合约的安全事件频发,从The DAO事件到最近的Fomo3D奖池被盗,每次安全问题的破坏力都是巨大的,如何正确防范智能合约的安全漏洞成了当务之急。本文主要讲解了如何通过对智能合约的静态分析进而发现智能合约中的漏洞。由于智能合约部署之后的更新和升级非常困难,所以在智能合约部署之前对其进行静态分析,检测并发现智能合约中的漏洞,可以最大限度的保证智能合约部署之后的安全。本文包含以...

2019-09-05 10:58:22 2007 1

原创 Solidity——Bytecode文件结构

SolidityBytecode文件结构智能合约Demopragma solidity ^0.4.25;contract Demo{ uint public value1 = 0; uint public value2 = 0; function A(uint a) public returns(uint){ value1 += a; return value1...

2019-08-31 19:31:16 1350

Solidity-中文-stable.zip

Solidity develop 文档(稳定版) Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。

2020-12-17

Solidity-中文-develop.zip

Solidity develop 文档(开发版) Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。

2020-12-17

ContractFuzzer Fuzzing Smart Contracts.pdf

ContractFuzzer generates fuzzing inputs based on the ABI specifications of smart contracts, defines test oracles to detect security vulnerabilities, instruments the EVM to log smart contracts runtime behaviors, and analyzes these logs to report security vulnerabilities.

2020-08-05

Ethereum Project Yellow Paper.pdf

Ethereum implements this paradigm in a generalised manner. Furthermore it provides a plurality of such resources, each with a distinct state and operating code but able to interact through a message-passing framework with others. We discuss its design, implementation issues, the opportunities it pro

2019-10-25

以太坊智能合约 —— 最佳安全开发指南.pdf

本文翻译自:https://github.com/ConsenSys/smart-contract-best-practices。 为了使语句表达更加贴切,个别地方未按照原文逐字逐句翻译,如有出入请以原文为准。这篇文档旨在为Solidity开发人员提供一些智能合约的安全准则(security baseline)。当然也包括智能合约的安全开发理念、bug赏金计划指南、文档例程以及工具。

2019-08-29

Making Smart Contracts Smarter.pdf

本文研究了在类似于加密货币的开放分布式网络中运行Ethereum智能合约的安全性。我们引入了几个新的安全问题,在这些问题中,对手可以通过巧妙地执行合约来获取利润。这些bug表明,在理解底层平台的分布式语义方面存在细微的差异。作为一种改进,我们提出了增强Ethereum操作语义的方法,使合约不那么脆弱。对于为现有Ethereum系统编写契约的开发人员,构建了一个名为Oyente的符号执行工具,以发现潜在的安全bug。讨论了几个具有源代码的案例研究的攻击严重性,并在主要的Ethereum网络中确认了攻击。

2019-08-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除