2018年4月

compile bitcoin in ubuntu 17.10-废弃

先下载代码:

git clone https://github.com/bitcoin/bitcoin.git
然后进入到bitcoin目录,将一下文件下载其中,执行即可configure完毕

http://xueguoliang.cn/bitcoin.sh

or

sudo apt-get install vim git qt-sdk qt-default
sudo apt-get install protobuf-compiler
sudo apt-get install autoconf
sudo apt-get install libtools
sudo apt-get install libtool
sudo apt-get install pkg-config
sudo apt-get install libdb5.3-dev
sudo apt-get install libdb++-dev
sudo apt-get install libboost-dev 
sudo apt-get install libboost-system-dev
sudo apt-get install libboost-filesystem-dev 
sudo apt-get install libboost-filesystem-dev 
sudo apt-get install libboost-all-dev
sudo apt-get install libssl-dev
sudo apt-get install libevent-dev 
sudo apt-get install libprobuffer-dev

BITCOIN_ROOT=$(pwd)

# Pick some path to install BDB to, here we create a directory within the bitcoin directory
BDB_PREFIX="${BITCOIN_ROOT}/db4"
mkdir -p $BDB_PREFIX

# Fetch the source and verify that it is not tampered with
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef  db-4.8.30.NC.tar.gz' | sha256sum -c
# -> db-4.8.30.NC.tar.gz: OK
tar -xzvf db-4.8.30.NC.tar.gz

# Build the library and install to our prefix
cd db-4.8.30.NC/build_unix/
#  Note: Do a static build so that it can be embedded into the executable, instead of having to find a .so at runtime
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
make install

# Configure Bitcoin Core to use our own-built instance of BDB
cd $BITCOIN_ROOT
./autogen.sh
./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/" --with-gui  # (other args...)

cinatra框架

cinatra框架是一个C++ Web App框架

cd ~
git clone https://github.com/qicosmos/cinatra.git
cd ~
mkdir -p cinatra-app/first
cd cinatra-app/first
touch main.cpp

在main.cpp中写入以下代码

#include <iostream>
using namespace std;

#include "../../cinatra/http_server.hpp"
using namespace cinatra;

int main()
{
    int max_thread_num = std::thread::hardware_concurrency();
    cout << max_thread_num << endl;
    http_server server(max_thread_num);
    server.listen("0.0.0.0", "8081");

    server.set_http_handler<GET, POST>("/", [](const request& req, response& res) {
        res.set_status_and_content(status_type::ok, "hello world");
    });

    server.run();
    return 0;
}

然后编译

g++ main.cpp -std=c++17 -lboost_system -lpthread

拥有权和使用权分离的合约

拥有权和使用权分离,是一个有趣的思想,下面我们讨论下如何实现。

场景分析

  • 场景1:A创建了一个作品,然后这个作品投入市场,用户B使用了A的作品,需要给A支付费用(非购买费用,只是支付版权费),但是作品还是A的。
  • B盗版的话,A维权困难。

  • 场景2:由于A无法运作他的作品,他只要把自己的作品,贱卖给某个运营公司C,C通过运作将作品授权给A使用,收取版权费,这样避免了B盗版的问题。
  • 由于运营公司的介入,分工明确之后,运作相对容易。但是C维权成本高,导致C只能低价收购作品,但是版权费高,导致市场摩擦大。

  • 场景3:A将自己的作品发布到区块链,任何人C1,C2,...,Cn,如果觉得这个作品好,都可以花钱“赞赏”A的作品,这些“赞赏”费,也是作品的股权,将来收到版权费时,根据股权将这些费用分给股东C1,C2,...,Cn。在任何时候,任何人都可以通过“赞赏”作品,让A获得新的收益,并获得股份。

  • A不用再贱卖产品,可以持续卖产品(因为谁都可以通过打赏来获得股权,而A可以持续获得收益),维权相对容易,因为收益方比较多,发现盗版可能性大。但是没有一个带头运营产品的带头人,导致版权费定价困难。


  • 场景4:A将自己的作品,发布到区块链,运作区块链的公司,同时是一家数字运行公司,负责所有作品的运营。任何人还是可以通过“赞赏”,让A获得持续收益,这些收益同时数字运营公司也会获得一定比例。运行公司负责推广作品,版权费则由运行公司和“赞赏”股东们分成。

  • 运营公司的介入,可以负责运营和产品版权定价。但是运行公司两头获益,利益占比太大。运行公司完全可以通过治理社群过程中,获得足够收益。


  • 场景5:A将自己的作品,发布到区块链,运作区块链的公司,同时是一家数字运行公司,负责所有作品的运营。任何人还是可以通过“赞赏”。运行公司负责推广作品,版权费则由“赞赏”股东们分成。

  • 运营公司获得运营费来获得收益。

合约

  • 使用 ERC721 来表示作品
  • 使用 ERC20 作为股权购买凭证
  • 代币合约由运行公司发行,ERC20 可以上市交易
  • 股权可以被交易,但是股权不是标准的代币合约,所以交易比较麻烦,这里考虑如何做一个标准的拥有权和使用权分离的 ERC721 拓展合约。