域名抢注服务商:youdot.io

【介绍】

官网:https://www.youdot.io/en

油管:https://www.youtube.com/watch?v=y65TI6A1514

后缀:.ES .EU .FR .IT .BE

【案例】

案例:

【合作】

网址:

域名抢注服务商:NAMES.plus

【介绍】

官网:http://names.plus/

油管:https://www.youtube.com/channel/UC04TLIzkuF9DeLCfW4feD-w

【案例】

案例:http://whoisdog.com/carousel.io

【合作】

网址:https://park.io

怎样编译安装Geth

【介绍】

go-ethereum 是以太坊常用的客户端,简称 Geth 。

官网:https://geth.ethereum.org/
下载:https://geth.ethereum.org/downloads/

【依赖】

安装Git, Nodejs, gcc-c++, ntp, epel 等辅助工具:

yum install git bzip2 gcc-c++ ntp epel-release nodejs

安装cmake:

参考:http://amon.org/cmake

安装golang(go-ethereum是golang编写的):

参考:http://amon.org/go

【安装】

git clone https://github.com/ethereum/go-ethereum.git  
cd go-ethereum/
make all
echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile
source /etc/profile

报错:

...
github.com/ethereum/go-ethereum/swarm/testutil
util.go:45: exit status 2
exit status 1
make: *** [all] Error 1

参考:https://github.com/ethereum/go-ethereum/issues/15533
参考:https://blog.csdn.net/bravezhe/article/details/81838430
参考:https://bitshuo.com/topic/592503e7e358dd8c2f65d859

mv /usr/local/include/iconv.h /usr/local/include/iconv.h.back

启动网络时间同步,开启防火墙,打开8087和30303端口(geth用到的端口):

systemctl enable ntpd 
systemctl start ntpd
systemctl start firewalld
firewall-cmd --zone=public --add-port=8087/tcp --permanent
firewall-cmd --zone=public --add-port=30303/tcp --permanent

【命令】

语法:

geth [options] command [command options] [arguments...]

帮助:

geth --help

【配置】

搭建私有链前需要创建 genesis.json 配置文件用于初始化创世区块:

参考:https://bitshuo.com/topic/59a531a0acad6ff75e6297af
参考:http://wp.iter-cc.com/?p=1055
参考:http://bigdatadecode.club/Ethereum-private-chain.html

{
  "config": {
        "chainId": 8,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {"0x0be5196a5503e4051b21e713f245b3ab24bcfeaf": {"balance":"2000000000000000000000000"}},
  "coinbase"   : "0x0be5196a5503e4051b21e713f245b3ab24bcfeaf",
  "difficulty" : "0x20000",
  "extraData"  : "0x74686520726f73657320696e206865722068616e642c2074686520666c61766f7220696e206d696e65",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x00000000c000ff59",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x599DA33A"
}

配置说明:
config.chainId // 区块链的ID,在 geth 命令中的 –networkid 参数需要与 chainId 的值一致
config.homesteadBlock // Homestead 硬分叉区块高度,不需要关注
config.eip155Block // EIP 155 硬分叉高度,不需要关注
config.eip158Block // EIP 158 硬分叉高度,不需要关注
coinbase // 矿工账号,第一个区块挖出后将给这个矿工账号发送奖励的以太币
difficulty // 难度值,越大越难
extraData // 附加信息随便填
gasLimit // gas 的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大
nonce // 一个 64 位随机数
mixhash // 与 nonce 配合用于挖矿,由上一个区块的一部分生成的 hash
parentHash // 上一个区块的 hash 值
alloc // 预设账号以及账号的以太币数量,私有链挖矿比较容易可以不配置

创建区块文件夹,使用 geth 的 init 命令初始化创世区块:

mkdir -p /root/ethbase/chain
cd root
geth --datadir "/root/ethbase/chain" init genesis.json

输出:

INFO [11-30|22:42:41.552] Successfully wrote genesis state         database=lightchaindata                          hash=1e7bea…deffa5

输出调试log:

geth --dev console 2>> geth_dev_log

输出:

Welcome to the Geth JavaScript console!

instance: Geth/v1.8.20-unstable-ef8ced41/linux-amd64/go1.11.2
coinbase: 0xf13ddcac8c11027fac5305882ec4c3236c20b265
at block: 0 (Thu, 01 Jan 1970 08:00:00 CST)
 datadir:
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0

然后在大于号后输入尝试:

    > eth.accounts
    "0x3341e796e5d43919287d49a86cb595d74ddea657"

即完成Geth的安装。

【同步】

参考:https://www.jianshu.com/p/3445ff08229a
参考:https://blog.csdn.net/guokaikevin/article/details/79254785

Ethereum(以太坊)经过历年的累积,交易区块大小已有几百G左右。如果全部同步,并且严格逐个验证,需要太多的时间和计算。

「同步」的意思是把网络上的区块全部下载到本地,以同步到网络的最新状态。使用客户端前必须先同步区块。

以太坊有三种同步的模式:full 、 fast 和 light。

full 模式:

从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。速度最慢,但是能获取到所有的历史数据。

geth --syncmode full

fast 模式:

快速同步模式,只下载状态(state downloads)。获取区块的header,获取区块的body,在同步到当前块之前不处理任何事务。然后获得一个快照,此后,像full节点一样进行后面的同步操作。

这种方法用得最多,目的在不要在意历史数据,将历史数据按照快照的方式,不逐一验证,沿着区块下载最近数据库中的交易,有可能丢失历史数据。此方法可能会对历史数据有部分丢失,但是不影响今后的使用。

使用此模式时注意需要设置 –cache,默认16M,建议设置为 1G(1024)到 2G(2048)。

geth --fast --cache 512

light 模式< :/strong>

仅获取当前状态。验证元素需要向full节点发起相应的请求。

geth --light

更优雅的同步方式

同步时把输出日志重定向到network_sync.log中,并进入控制台。这样就可以边同步边使用控制台命令。

geth --fast console 2>network_sync.log

浏览日志:

tail -f network_sync.log

【账户】

参考:https://www.jianshu.com/p/3445ff08229a

新建账户:

geth account new
> personal.newAccount("passphrase")

非交互方式:

geth --password <passwordfile> account new

密码以明文方式写在文件 passwordfile 里

导入账户:

geth account import <keyfile>

私钥以明文方式写在文件 keyfile 里,每个一行。

是存着账户信息的 json 文件,其中私钥是被账号密码(password)加密后,存放在里面的。

不同平台的 keyfile 默认存储位置是不同的
1. Windows: C:\Users\username%appdata%\Roaming\Ethereum\keystore
2. Linux: ~/.ethereum/keystore
3. Mac: ~/Library/Ethereum/keystore

结合 –password,可以使用在导入账户时设置密码:

geth --password <passwordfile> account import <keyfile>

修改密码:

geth account update <address>

例如 geth account update 2:2是账户的编号,在 geth account list 中可以查看。

导入钱包:

geth wallet import <etherwallet.json>

创建多签名钱包,请参见 Creating a Multi-Signature Wallet in Mist
网址:http://www.ethdocs.org/en/latest/account-management.html#creating-a-multi-signature-wallet-in-mist

列出所有账户:

geth account list

对应的控制台命令为 > eth.accounts

查看账户余额:

列出账户余额,单位是 Wei :

> eth.getBalance(<address>):

列出账户余额,单位是 eth :

> web3.fromWei(eth.getBalance(<address>), "ether")

下面的代码可以打印所有的账户余额:

function checkAllBalances() { 
var i =0; 
eth.accounts.forEach( function(e){
     console.log("  eth.accounts["+i+"]: " +  e + " \tbalance: " + web3.fromWei(eth.getBalance(e), "ether") + " ether"); 
i++; 
})
};

可以把代码存到文件中。进入 geth 的控制台后,用 > loadScript() 导入文件中的函数。

【参考】

参考:https://blog.csdn.net/cowfishy/article/details/80211116
参考:http://www.voidcn.com/article/p-atytuled-bpk.html
参考:https://segmentfault.com/a/1190000012834708

怎样实现多域名证书+http2

这个问题2年前就尝试过,但无奈放弃。

发现:https://mypark.app/
特点:免费提供域名停放和URL跳转服务,支持自动签发免费SSL证书。同时支持http2。

怎么实现的?

参考:

理论
https://blog.csdn.net/u011130578/article/details/77979325
https://www.alibabacloud.com/help/zh/faq-detail/43742.htm
https://shansing.com/read/355/
https://wiki.openssl.org/index.php/TLS1.3
https://zh.wikipedia.org/wiki/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8D%E7%A7%B0%E6%8C%87%E7%A4%BA

Apache
http://blog.51cto.com/guoxh/2114630
https://www.wosign.com/faq/multisite-multidomain-https.htm
http://www.linuxdiyf.com/linux/32329.html
http://www.ttlsa.com/web/sni-multi-domain-virtual-host-ssl-tls-authentication/

Nginx
https://zhidao.baidu.com/question/1673406059627368307.html
http://www.cnblogs.com/wjoyxt/p/6134128.html
https://my.oschina.net/careyjike/blog/896507
https://www.restran.net/2017/01/24/nginx-letsencrypt-https/
http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/
https://www.jianshu.com/p/d40e249774ff
https://segmentfault.com/a/1190000013839445
http://www.voidcn.com/article/p-cuazhgls-np.html
http://ju.outofmemory.cn/entry/308785
https://www.diewufeiyang.com/post/971.html
https://www.tingtao.org/archives/709.html
http://www.voidcn.com/article/p-pdkgnexa-bbe.html
http://linux.it.net.cn/e/server/nginx/2014/1208/9876.html

Nginx支持多域名SSL证书是需要OpenSSL库支持的,CentOS5.X的OpenSSL库本身不支持这种特性,需要重新下载编译,步骤如下

wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz
tar zxvf ./openssl-0.9.8zh.tar.gz
cd ./openssl-0.9.8zh
./config enable-tlsext
make
make install

Nginx也要重新编译,添加OpenSSL源码的目录

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=../openssl-0.9.8zh/

怎样使用 phpWhois

【介绍】

This package contains a Whois (RFC954) library for PHP. It allows a PHP program to create a Whois object, and obtain the output of a whois query with the Lookup function.

官网:http://www.phpwhois.org/

【下载】

源码:https://github.com/sparc/phpWhois.org/tree/master/src
源码:https://github.com/phpWhois/phpWhois/

应用:https://libraries.io/search?keywords=whois&languages=PHP

参考:http://www.loveteemo.com/article-142.html