Living a Simple Life is a Happy Life

有饭吃,自由自在,就非常开心

How to Set Systemd Startup Script for Bitcoind?

| Comments

setup bitcoind.service

1
vim /etc/systemd/system/bitcoind.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[Unit]
Description=Bitcoin daemon
After=network.target

[Service]
ExecStart=/opt/node/bitcoin/bin/bitcoind -daemon -conf=/opt/node/bitcoin/blockdata/bitcoin.conf -pid=/run/bitcoind/bitcoind.pid
# Creates /run/bitcoind owned by bitcoin
RuntimeDirectory=bitcoind
RuntimeDirectoryPreserve=yes
User=ubuntu
Type=forking
PIDFile=/run/bitcoind/bitcoind.pid
Restart=on-failure
StandardOutput=/var/log/bitcoind.log
StandardError=/var/log/bitcoind.log

# Hardening measures
####################

# Provide a private /tmp and /var/tmp.
PrivateTmp=true

# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full

# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true

# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true

[Install]
WantedBy=multi-user.target

Reload systemctl daemon

1
systemctl daemon-reload

Enabled new bitcoind service

1
systemctl enable bitcoind

Commands to start or stop the service

1
2
systemctl stop bitcoind
systemctl start bitcoind

Show service status

1
systemctl status bitcoind.service

More info in:

https://github.com/bitcoin/bitcoin/tree/master/contrib/init

Xargs Sh -c Skipping the First Argument

| Comments

其实这个问题已经见过很多次了,但是知其然不知其所以然;今天偶尔在stackoverflow上看到了,记录一下;

shell中的arg1, arg2…

在bash shell中,$1, $2代表arg1, arg2,比如

1
2
3
# echo hello world|xargs echo $1 $2

hello world

How to Do Logging on Solidity Contract With Truffle Suite

| Comments

Ethereum的智能合约调试起来很麻烦,到目前为止还是没有一个方便的类似于console.log()或printf的调用;

一般都是通过Event的方法来打印log;这种办法在写单元测试的时候很麻烦;

目前最接近于官方的手段是构造一个公用的Console库合约,然后链接到主合约里面来用;

https://github.com/trufflesuite/truffle-logger-example

这个PR一直没有Merge到TruffleSuite的新版本中,我们只能先临时手工Copy下代码来Monkey Patch一下;

步骤如下:

  • 首先在主合约的同级目录添加Console.sol合约:
1
wget https://raw.githubusercontent.com/trufflesuite/truffle/truffleLogger/packages/core/lib/logging/Console.sol
  • 然后在部署脚本里面增加这个库的链接(以官方示例MetaCoin为例)
1
$ vim migrations/2_deploy_contracts.js
1
2
3
4
5
6
7
8
const Console = artifacts.require("Console");
const MetaCoin = artifacts.require("MetaCoin");

module.exports = function(deployer) {
      deployer.deploy(Console);
        deployer.link(Console, MetaCoin);
          deployer.deploy(MetaCoin);
          };
  • 在需要打印log的单元测试中引入Console.sol
1
$ vim test/TestMetaCoin.sol
1
2
3
4
import "../contracts/Console.sol";

.....
    console.log("xxxxxx");

十行代码挑战世界金融体系

| Comments

这个有点标题党了,但实话说许多”高科技”项目也是这种浮夸的宣传手段,且听我慢慢道来;

最近央行将推出数字货币(DCEP)的消息沸沸扬扬,在没有实际用过之前,我无意对其做过多揣测;

不过这个消息激起了我另一方面的兴趣,就是写一写那些在以太坊上面发行的各种山寨Token;

众所周知,自从Ethereum的ERC20ERC223ERC721ERC777等Token合约标准诞生以来,在Ethereum上面发行一种货币的成本低的令人发指,我测算,按照现在的ETH汇率,大概10块人民币就能让你发行一个具有发行、转账、增发、销毁等基本功能的电子货币,如果导入OpenZeppelin程序库,在部署合约的时候多出100块钱左右,就可以拥有一个具有融资上限、拍卖、行权计划和其他更复杂的功能的货币。

先知Andreas M. Antonopoulos 曾经在2014年加拿大关于比特币的听证会上表示,未来的货币发行市场可能会超出所有人的想象,一个十几岁的屁大小子,用10行代码足以创造最灵活最有信用的货币;借助区块链的技术,一个幼儿园的童星创造的货币,可能比历史上最有权力的君王创造的货币用户更多;

虽然比特币发明以来,把它的代码Folk一份,修改两个参数就出来”颠覆世界”的山寨币已经数不胜数,但真正把”造币”这件事情变成无门槛,像吃棒棒糖一样容易的,还是得说以太坊的ERC20的横空出世;

那么,就先让我们体验一下,如何10行代码创造我们自己的棒棒糖币吧~~~

Hello Lightning Network -3

| Comments

在前面几篇文章中我们评论道:闪电网络是一个丰富的生态,将来里面会有各种各样的角色参与其中;目前来看,如何注入足够Inbound Capacity,保持闪电网络有充裕的流动性似乎是个棘手问题;而且不少人攻击这最终会导致比特币运营中心化;

为了理解这个问题,我们对于闪电网络的原理做了详细的探讨,现在是谈谈社区的一些解决方案的时候了;

我们这篇文章就来探讨为了解决Inbound Capacity问题,目前lightningLab的一个实验项目:

loop

Hello Lightning Network -2

| Comments

在上一篇文章中我们评论道:闪电网络是一个丰富的生态,将来里面会有各种各样的角色参与其中;目前来看,如何注入足够Inbound Capacity,保持闪电网络有充裕的流动性似乎是个棘手问题;而且不少人攻击这最终会导致比特币运营中心化;

为了研究如何解决Inbound Capacity的问题,我们还需要复习并深化闪电网络的一些基础知识;即RSMC 和HTLC;这些基础我们曾在之前的文章中简要介绍过,但只是对网上的资料做了一番整理,人云亦云而已,实在是辜负了闪电网络;

如果把闪电网络比作一支跌宕起伏的乐章,那RSMC和HTLC就是其中最华彩的两个小节,围绕这两个基础技术所衍生的种种细节Tooltips就是其中的伴奏,整个乐章美不胜收。那么,让我们沉下心来仔细体味吧;

WSL环境备份恢复

| Comments

WSL环境是可以单独备份还原的,有个工具名为LxRunOffline:

https://github.com/DDoSolitary/LxRunOffline

release版本下载下来之后直接使用就可以;记录一下操作命令: