需要安装 NSIS,然后在安装向导工具 HM NIS Edit
使用 HM NIS Edit 来操作即可。
文件-新建脚本向导

nsis
nsis editor

vscode 插件

nsis 作者:idleberg
主要需要配置 NSIS 编译器的路径 NSIS 安装目录下的 makensis.exe 即 NSIS 编译器。
脚本文件的默认扩展名是 .nsi,头文件为 .nsh。
文件名右侧有功能按钮,可以执行编译,显示版本等操作

阅读全文 »

MinGW32 和 MinGW-w64 区别

MinGW32先开发,只能编译32位程序;
MinGW-w64从MinGW32发展而来,支持编译64和32位位程序,同时可以进行交叉编译。

MinGW-w64类型:
x86_64: 支持在x64和x86上运行
i686: 支持在x86上运行

i386/i686/x86_64区别

i386 适用于intel和AMD所有32位的cpu,以及采用X86架构的32的cpu。
X86_64 适用于intel和AMD采用X86架构的64位cpu,兼容32位。

关于mingw-w64-x86_64:
生成64位库只要用默认的参数编译即可,而生成32位库则要用-m32参数编译.

对于mingw-w64-i686:默认生成32位程序

查看默认库的搜索路径

minGW 下面执行

ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012

如何指定某个库的路径

-llibrary
foo.o -lz bar.o 搜索库 z 在 foo.o 之后。

-Lsearchdir
–library-path=searchdir

使用环境变量设置附加库的路径

export LIBRARY_PATH
LIBRARY_PATH="C:/mingw/local/lib;$LIBRARY_PATH"

Cygwin是运行于Windows平台的POSIX“子系统”,提供Windows下的类Unix环境,并提供将部分+Linux+应用“移植”到Windows平台的开发环境的一套软件。

MinGW,Minimalist GNU for Windows,用于开发原生(32位) Windows 应用的开发环境。它主要提供了针对 win32 应用的 GCC、GNU binutils 等工具,以及对等于 Windows SDK(的子集)的头文件和用于 MinGW 版本 linker 的库文件(so、a等,而不是 VC 的 lib)。

MinGW 是用于进行 Windows 应用开发的 GNU 工具链(开发环境),它的编译产物一般是原生 Windows 应用,虽然它本身不一定非要运行在 Windows 系统下(是的 MinGW 工具链也存在于 Linux、BSD 甚至 Cygwin 下)

MSYS 是用于辅助 Windows 版 MinGW 进行命令行开发的配套软件包,提供了部分 Unix 工具以使得 MinGW 的工具使用起来方便一些。如果不喜欢庞大的 Cygwin,而且使用不多,可以试试。不过喜欢完整体验、不在乎磁盘占用等等,还是推荐 Cygwin 而不是 MSYS。

IPFS 是什么

IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。

内容可寻址:通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间
版本化:可追溯文件修改历史
点对点超媒体:P2P 保存各种各样类型的数据

IPFS采用的索引结构是DHT(分布式哈希表),数据结构是Merkle DAG(Merkle 有向无环图)

阅读全文 »

直接安装会报错 Unable to locate package mingw32
解决办法如下:

sudo gedit /etc/apt/sources.list
//在sources.list末尾添加,保存
deb http://us.archive.ubuntu.com/ubuntu trusty main universe
sudo apt-get update
sudo apt-get install mingw32

bitcoin 0.16.1 版本

Locktime 和 Sequence Number

根据参数设置 nLockTime

Bitcoin-tx.cpp
main-CommandLineRawTx-MutateTx-MutateTxLocktime

nLockTime 说明:
限制交易可以加入区块的条件,
用户可以设置一个在将来有效的交易,给用户一个改变的机会。
如果用户改主意了,可以创建一个 non-locktime 交易

cloc

在代码目录输入 cloc . 即可看到统计结果

gitstat

github

gitstats code result

code 是需要统计的代码目录
result 是结果输出目录

bitcoin 0.16.1代码 47W行
d5662299.png
f0960234.png

bitcoin 使用了 4.8 版本,所以这里大致了解一下。

Berkeley DB(BDB)是一个高效的嵌入式数据库编程库,C语言、C++、Java、Perl、Python、Tcl以及其他很多语言都有其对应的API。Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统以及实时操作系统。

Berkeley DB以拥有比Microsoft SQL Server和Oracle数据库等更简单的体系结构而著称。例如,它不支持网络访问—程序通过进程内的API访问数据库。
Berkeley DB不支持SQL或者其他的数据库查询语言,不支持表结构和数据列。
访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装。记录和它的键都可以达到4G字节的长度。
尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。

是一种非对称加密算法,比特币中使用该算法做数字签名
让同一个 seed 可以支援多币种、多帐户

ECC 和 RSA 相比,在许多方面都有对绝对的优势,主要体现在以下方面:
抗攻击性强
CPU 占用少
内容使用少
网络消耗低
加密速度快