- 博客(909)
- 资源 (121)
- 收藏
- 关注
原创 以太坊外部账户EOA与合约账户CA的区别
在以太坊中,账户拥有4个字段:{nonce,balance,codeHash,StorageRoot}。分为2种账户:外部账户、合约账户。外部账户,Externally Owned Accounts,简称EOA,它拥有私钥,其codeHash为空; 合约账户,Contact Account,简称CA,它没有私钥,其codeHash非空。
2021-10-20 11:49:06 6125 2
原创 使用Slither检查智能合约
Slither 是一个专门用来对Solidity智能合约进行Bug分析的工具,使用Slither可以方便的检测合约里的缺陷和漏洞,但是该工具有漏报现象,比如对for循环里的数据溢出检测就不是很灵敏,需要人工审计代码。
2021-10-18 16:02:59 10345
原创 使用web3.py发送ETH和ERC20
2021年,web3.py的版本更新到了v5.4,其库函数名称改了很多,库函数名称由之前的驼峰命名xxxYYYzzz(错落有致,用大小写区别不同的名称),改成蛇形命名法: xxx_yyy_zzz(名称全部小写,名字之间用- 下划线连接)。使用web3.eth.send_transaction()来发送ETH, 使用web3.eth.wait_for_transaction_receipt()来发送ERC20。
2021-10-15 20:35:42 5400 6
原创 解决“ethereumjs-abi.git无法访问“问题
今天,在使用sudo yarn install拉取依赖包时,报"无法访问 'https://github.com/ethereumjs/ethereumjs-abi.git/'"问题,如图(1)所示。出现这种情况的原因:yarn.lock文件里的dependencies字段的ethereumjs-abi 没有指定版本号。解决方法: <font color="red">给dependencies的ethereumjs-abi 指定一个版本号即可,比如 0.6.8。
2021-10-12 11:15:28 4998 9
原创 使用hardhat将合约部署到ganache
hardhat使用命令:npx hardhat run scripts/deploy.js --network XXXnet,既可以把合约部署到主网(mainnet)、测试网(ropsten、rinkey),还可以部署到本地网络(ganache,hardhat-test)。比如,npx hardhat run scripts/deploy.js --network ganache,就可以把合约部署到ganache,下面以onehat工程为例,将token.sol合约部署到ganache。
2021-10-12 00:07:50 3702
原创 创建hardhat工程, 用于Solidity测试
hardhat是一个专门用来进行智能合约开发、测试的软件工具集,它即可以在本地自动部署一个以太坊网络,类似于ganache,又可以像truffle一样,快捷的部署、测试和调试Solidity智能合约。即 hardhat = ganache + truffle。下面,介绍hardhat的工程创建流程,这里以onehat工程为例。
2021-10-11 22:16:31 1995
原创 推送本地项目到gitee
gitee是国内仿造github创造一个开源代码托管与版本管理平台,它的很多命令与github非常类似。下面介绍,将本地项目推送到gitee。这里以threesmart工程为例,进行说明。
2021-10-04 23:21:26 2211
原创 vscode常用的深色主题
在vscode中有几种常用的深色主题,设置深色主题的原因是为了保护眼睛,同时给代码着色,更方便阅读和编写。点击vscode做出的插件按钮 --> 输入 theme 回车即可。
2021-10-02 16:14:35 4912
原创 openzeppelin批量测试Solidity合约
openzeppelin是用于Solidity合约进行审计、代码安全测试的库,其中test-environment、test-helpers使用起来非常方便。下面,介绍对ERC20GuDingToken.sol、ERC20XiaoHuiToken.sol这2个合约的批量测试。
2021-10-02 10:35:32 1061
原创 truffle部署指定的合约
truffle可以根据/migrations/ID_deploy_XXX.js里的ID号,来部署与ID绑定的合约,使用命令为 migrate -f ID --to ID,例如,部署 2_deploy_HWT.js的命令为: migrate -f 2 --to 2
2021-10-02 08:51:30 1817
原创 解决“node-gyp command failed“问题
今天,在MacOS终端,使用npm install,发现"npm ERR! command failed"错误,如图(1)所示。出现这种现象的原因是,当前的nodejs的版本是build版本,或者版本太高,需要改成一个LTS版本,比如,node -v14.18。
2021-09-29 10:16:57 3630 1
原创 将Solidity abi.json压缩成一行
智能合约编译成功后,会得到一个.bin、.json文件,在.json文件里就含有该合约的abi。下面介绍这个abi字段压缩成一行。用vscode打开xx.json,找到abi关键字,将光标放到括号 [的左边,然后按Shift+Ctrl+→ 快捷键选中abi的[]字段 ,然后复制到json在线解析网页,点击[压缩一行],再复制到res.json里即可,如图(1)、如图(2)所示。
2021-09-29 08:47:48 1235
原创 获取Solidity对应的commit版本号
Solidity的编译器版本,分为nightly、commit这2种,nightly是build版,也就是测试版,而commit是正式版。这里介绍获取所有的正式版。
2021-09-27 16:37:54 872
原创 屏蔽Mac F12音量键
Mac的F12默认是增大音量的快捷键,而在vscode中F12是用于查看函数定义的快捷键,这2个快捷键有冲突,修复冲突的方法如下。点击Mac桌面左上角的苹果图标 --> [系统偏好设置]--> 键盘 --> 勾选"将F1、F2等键用作标准功能键"。
2021-09-27 13:10:18 1470
原创 vscode切换Solidity的编译版本
在vscode中,先安装solidityhe、solidity Extends、solidity debugger这3个插件,然后设置Solidity的版本号。这里以设置0.7.3版本为例,进行说明。
2021-09-26 00:24:58 4753 1
原创 解决truffle “could not find suitable configuration file“问题
在使用truffle命令的过程中,有时会报"could not find suitable configuration file",出现这种现象的原因是,当前目录下缺少truffle.js 或者truffle-config.js。解决方法:使用truffle init命令,生成一个truffle.js或者truffle-config.js即可。或者,切换到含有truffle.js 或者truffle-config.js的目录,再使用truffle命令即可。
2021-09-25 22:13:15 2684
原创 Solidity的上溢与下溢
Solidity是一种类似于JavaScript的语言,它面向对象,支持多继承,可以一次返回多个值。在开发智能合约的过程中,对应++、--这类的操作要考虑变量的定义域,即要考虑变量的上溢与下溢问题。
2021-09-25 10:55:51 658
原创 解决React “name can no longer contain capital letters“问题
react创建工程时,工程名称要全部小写,否则无法创建。可以使用全部小写+蛇形命名法来区别不同的工程。比如,oneapp 加一个横杆,改成 one-app。
2021-09-24 16:42:08 2973
原创 MateMask连接本地私有链节点ganache
MateMask既可以连接以太坊的主网,也可连接以太坊的测试网(ropsten网、rinkeby网),还有连接私有链,只有给出URL和端口就可以连接。这里介绍MateMask连接私有链节点ganache。
2021-09-21 23:35:01 10110
原创 openzeppelin与solidity版本对应关系
OpenZeppelin 是构建在 EVM 之上的开源智能合约开发工具,让开发者可以安全地开发和管理智能合约和 Dapp。OpenZeppelin 使用以太坊智能合约语言 Solidity 进行构建,并支持所有 EVM 和 eWASM 的跨平台移植。使用OpenZeppelin库,可以让智能合约更加安全、更加简洁。
2021-09-20 11:20:47 1990
原创 mac电脑安装brew、vscode、nodejs、截图等软件
先安装brew包管理工具,后安装git、vscode、nodejs等软件。有剪切板工具Maccy、截图工具snipaste、编译工具C/C++、Python等。
2021-09-18 14:31:39 4881
原创 Fibonacci斐波那契数列 C++或go实现
Fibonacci斐波那契数列,也叫兔子数列,从第3项开始,每一项是前2项之和。斐波那契数列的前几项,依次为:0,1,1,2,3,5,8,21,34,...,下面介绍用C++或go来计算斐波那契数列。
2021-09-11 12:55:47 1083
原创 求1!+2!+3!+...+20! go语言实现
n的阶乘可以用一个for循环来求解,前n个数的阶乘相加,也可以用一个for循环来遍历,则求前n个数的阶乘之和,就需要2个for循环。
2021-09-11 08:42:26 405 1
原创 求矩阵里的岛屿个数 C++或Go实现
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。
2021-09-08 23:58:35 439
原创 单例模式的懒汉模式与饿汉模式之间的对比 C++
单例模式,是GOF 23种设计模式中的一种,有2种方法可以实现单例模式,分为懒汉式、饿汉式。它们的区别为,懒汉式,是在程序运行起来后调用getInstance()函数创建的,它需要加锁或使用std::call_one()方法,来保证唯一性。而饿汉式,是在程序编译时,单例对象就已经创建了,不需要加锁。
2021-09-07 16:30:36 298
原创 顺序查找、折半查找的区别与联系
顺序查找、折半查找,都是在一个线性表中,查找指定的关键字。它们的区别是,折半查找需要该线性表本身是有序的,而顺序查找则没有这个限制。
2021-09-05 15:55:11 3492
原创 直接插入排序、希尔排序、归并排序的区别与联系
直接插入排序、希尔排序,都属于插入排序,即每一趟选择一个关键字,把它插入到已排序序列的适当位置,直到整个序列都有序为止。而归并排序,比如,2路归并,是将2个子有序表,合并成一个新的有序表,这个新的有序表再跟其他字表合并,循环往复,两两归并,直到整个序列都成有序的。
2021-09-05 14:59:33 870
原创 直接选择排序、堆排序的联系与区别
在数据结构中,直接选择排序、堆排序,都属于选择排序,即每次从待排序的序列中选出最小的关键字,把它放到已排序的末尾,直到整个序列变成有序为止。对比它们的时间复杂度、空间复杂度等信息。
2021-09-05 10:07:03 520
原创 冒泡排序、快速排序的区别与联系
在数据结构中,冒泡排序和快速排序,都属于交换排序,即两两比较待排序的关键字,交换不满足次序的那些偶对,直到整个序列满足从小到大或从大到小的次序为止。当初始数据越接近有序时,推荐使用冒泡排序,这时候的时间复度接近于O(n);当初始数据越接近无序时,推荐使用快速排序,这时候的时间复制度接近于O(nlogn)。
2021-09-04 23:23:54 3178
原创 浏览器安装护眼插件
浏览器默认是白色背景,使用久了,眼睛会感到酸痛,下面介绍一款护眼插件--Dark Reader,它可以有效的修改网页的背景颜色和字体样式,并且有多种款式。在google浏览器的应用商店下载Dark Reader,安装即可。
2021-09-04 08:50:09 1006 1
原创 fabric删除链码对应的docker容器
在fabric中,链码运行在docker容器里,当不再使用链码时,需要手动删除该容器。既可以通过docker rmi IMAGE_ID删除链码容器,也可以在/var/lib/docker/image/overlay2/imagedb/content/sha256目录,找到以IMAGE_ID开头的文件夹,然后使用rm -rf IMAGE_ID* 进行链码容器的删除。
2021-09-01 15:50:01 990
原创 解决fabric “Authentication failed: failed classifying identity: Unable to extract msp“问题
在配置fabric的每个组织时,有时候会报"Authentication failed: failed classifying identity: Unable to extract msp"错误,出现这种现象的原因是,docker-compose.yaml文件的peer字段的CORE_PEER_LOCALMSPID没有配置,或者docker-compose.yaml里MSPID字段,与configtx.yaml的ID字段不一致导致的。
2021-08-31 11:36:39 531
原创 fabric BYFN命令简化
通过环境变量保存.pem路径,source使能环境变量脚本,来简化fabric-sample/first-network里的peer节点命令调用。
2021-08-28 09:10:58 697
原创 go下载指定版本的依赖包
在go语言开发中,要下载各种各样的依赖包,这些依赖包版本有的以vX.YY.ZZ结尾,有的以v0.0.0-20160315200505-970db520ece7结尾。这里以下载github.com/btcsuite/btcd v0.21.0-beta版本为例,进行说明。
2021-08-26 23:21:51 6513
原创 fabric里的marble私有数据访问案例
在fabric中,可以通过收集器collection来保存和访问私有数据,也可以定义Peer节点私有数据的访问权限,下面介绍marble私有数据访问案例。fabric的版本为v1.4.x。 使用PutPrivateData()函数,将私有数据写入到边侧数据库A、B;使用GetPrivateData()函数,从边侧数据库A、B里读取私有数据。
2021-08-26 15:30:34 613
原创 sed替换整行
在Linux中,sed命令的功能非常强大,下面介绍,使用sed命令来替换文件中的某一行。比如,将hello.txt里的lang=Java整行替换lang=RUST。
2021-08-17 14:25:53 27622 1
原创 fabric go语言链码打包并在其他Peer节点部署
在fabric中,当链码编译通过后,需要将其打包成.out、.cc结尾的package包,供其他的peer节点使用,使用的命令为peer chaincode package XXX。下面,介绍将fabric-samples/chaincode-docker-devmode/chaincode/fabtoken/testToken的golang工程打包的方法。
2021-08-15 10:14:02 1414
原创 scp跨主机远程拷贝
使用scp命令可以很方便的进行2个主机之间的跨网络拷贝,scp默认的端口为22,采用的协议为ssh。当ssh的修改了,比如端口为8888,则scp的端口也变成8888。
2021-08-14 20:55:07 1193
64位的jdk1.6_45 for Windows
2015-12-15
R调用C++代码
2015-12-11
RTools30与RTools33
2015-12-11
Rcpp_0.12.2
2015-12-10
深入浅出MySQL数据库开发优化与管理维护_第2版_唐汉明
2015-12-07
数据结构习题与解析B级_李春葆
2015-11-27
用MatLab GUI实现加减乘除
2015-11-26
Groceries数据集
2015-11-26
用Tab实现加减乘除
2015-11-25
数值与非数值分析VC++类库
2015-11-02
MatlabEngineTest
2015-10-27
APDL语法配置文件
2015-05-30
APDL编辑器
2015-05-29
VC6.0打开补丁
2015-05-15
IcofXSetup
2015-03-28
InnoSetup5.5
2015-03-28
C++标准程序库(pdf及源代码)
2015-01-19
数据结构使用C++标准模板库STL 陈本林版
2015-01-19
ZeroX64 v1.0.rar
2021-06-14
myColor v1.0.rar
2020-01-10
BoostTwo.rar
2019-12-08
Beyond compare右键菜单修复方法.rar
2019-09-08
ipmitool源码与编译说明.rar
2019-08-03
NewFileTime
2017-12-10
Just Manager_0.5.14
2017-03-19
Numpy1.10和Scipy0.16
2016-01-05
jython2.5.4_与jython2.7.0包
2016-01-01
Java通过JRI调用R
2015-12-28
Java调用R语言的实例
2015-12-28
基于用户的协同过滤算法Mahout实现
2015-12-23
commons-math3-3.5-bin包,有Gama、Beta函数
2015-12-23
JFreeChart和pdf操作
2015-12-21
itext5.0.6_itextasin1.5.2_jfreechar1.0.13_jcommon_1.0.16
2015-12-21
collections-generic-4.01_and_looks-2.1.4
2015-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人