BCSkill (Block chain skill ) 技术社区
社区QQ群:791420381
社区论坛:http://wiki.bcskill.com
Telegram: https://t.me/bcskill

ubuntu 18.04 编译安装 russellcoin

安装依赖

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install g++ git automake
udo apt-get install autoconf make libtool pkg-config libqt4-network libqtgui4
sudo apt-get install libboost-all-dev  git libdb++-dev libssl-dev

clone & 编译

cd
git clone https://github.com/russellcoinpay/russellcoin.git
cd russellcoin
./autogen.sh
cd depends
make -j`nproc`
cd ..
 ./configure --prefix=`pwd`/depends/x86_64-unknown-linux-gnu --disable-tests --with-gui=no
 make

异常

由于当前链代码依赖得qt版本为4.6.4,当前系统gcc 和 g++ 较高版本时,会导致语法错误

qmap.h:509:45: error: value-initialization of incomplete type ‘char []’
         node = node_create(d, update, akey, T());

解放方法,gcc和g++降级到4.8

gcc 降级4.8

sudo apt-get install gcc-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
sudo update-alternatives --config gcc
gcc --version

g++ 降级4.8

sudo apt-get install g++-4.8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100
sudo update-alternatives --config g++
g++ --version

根本解决

参考anoncoin 升级qt为5.7.1版本

参考

https://anoncoin.github.io/How_to_build_Anoncoin_from_source/
https://www.cnblogs.com/in4ight/p/6626708.html
https://github.com/Anoncoin/anoncoin/issues/26

EOS离线下载块历史数据地址

The archive consists of state, blocks, and state-history archives, plus a copy of a portable snapshot made by EOS Sweden on the day prior to the snapshop. This should help if your environment is different. The archives are made with eosio_1.8.1-1-ubuntu-18.04_amd64.deb Debian package.

https://snapshots.eosamsterdam.net/eos/

区块链私钥管理开源库- a blockchain private key management library

https://github.com/consenlabs/token-core-android
https://github.com/consenlabs/token-core-ios

String prvKey = WalletManager.exportPrivateKey(ethereumWallet.getId(), SampleKey.PASSWORD);
System.out.println(String.format("PrivateKey: %s", prvKey));
String mnemonic = WalletManager.exportMnemonic(ethereumWallet.getId(), SampleKey.PASSWORD).getMnemonic();
System.out.println(String.format("Mnemonic: %s", mnemonic));
String json = WalletManager.exportKeystore(ethereumWallet.getId(), SampleKey.PASSWORD);
System.out.println(String.format("Keystore: %s", json));

// output:
// PrivateKey: f653be3f639f45ea1ed3eb152829b6d881ce62257aa873891e06fa9569a8d9aa
// Mnemonic: tide inmate cloud around wise bargain celery cement jungle melody galaxy grocery
// Keystore: {"id":"c7575eba-3ae3-4cc3-86ba-2eb9c6839cad","version":3,"crypto":{"ciphertext":"7083ba3dd5470ba4be4237604625e05fa6b668954d270beb848365cbf6933ec5","mac":"f4f9ea8d42ff348b11fc146c396da446cc975309b3538e08a58c0b218bddd15d","cipher":"aes-128-ctr","cipherparams":{"iv":"db3f523faf4da4f1c6edcd7bc1386879"},"kdf":"pbkdf2","kdfparams":{"dklen":32,"c":10240,"prf":"hmac-sha256","salt":"0ce830e9f888dfe33c31e6cfc444d6f588161c9d4128d4066ee5dfdcbc5d0079"}},"address":"4a1c2072ac67b616e5c578fd9e2a4d30e0158471"}

EOS合约内unpack data

void myaction() {

   struct token_transfer {
      name from;
      name to;
      asset quantity;
      string memo;
   };

   // transaction is inside "prop" object (that we get from a eosio.msig table)
   eosio::multisig::proposals proptable( "eosio.msig"_n, proposer.value );
   auto& prop = proptable.get( proposal_name.value, "proposal not found" );

   // get the first action in the transaction, remember transactions can have multiple actions
   eosio::action my_action = eosio::unpack<eosio::transaction>( prop.packed_transaction ).actions.front();

   // get the data out of the action
   token_transfer my_action_data = my_action.data_as<token_transfer>();

   const name from      = my_action_data.from;
   const name to        = my_action_data.to;
   const asset quantity = my_action_data.quantity;
   const string memo    = my_action_data.memo;
}

参考

https://eosio.stackexchange.com/questions/4142/how-to-get-data-from-a-packed-transaction

关于传统项目转区块链项目

关于传统项目转区块链项目

引入区块链的优势

对于项目方

  1. 想把目前传统项目蹭区块链的热度,传统项目“转型”
  2. 想以此发token,
  3. 增加用户粘性

对于用户

  1. 传统的“数据库积分”可以通过区块链的资金体系流通,并“绕过限制”到交易所变现
  2. 解决信任,计算token的逻辑以及相关源数据去中心化

项目转型的实现

分为资产去中心化以及数据去中心化

资产去中心化

其实主要是怎么实现Token产出,可以先从传统互联网中心化应用的玩法设计,类似于需要数据才能计算出来奖励。

对于区块链去中心化设计,可以分成三个等级

  1. 完全去中心化,服务方与用户分别提供相关数据上链,通过链上智能合约,根据双方提供的源数据,计算奖励。
  2. 相对去中心化,服务方提供相关可以公开的数据上链,通过链上智能合约,根据提供的源数据,计算奖励。
  3. 资产去中心化,服务方根据相关数据,中心化计算相关的奖励,然后将奖励数据推到链上智能合约。

相关计算结果以及相关日志推送上链,用户可从区块浏览器等查看相关日志,根据相关数据验证资产产生的准备性。

数据去中心化

对于数据,分为可公开以及隐私数据

可公开的数据

如果数据量较小的话,可以直接写到智能合约内。对于数据量较大时,可以中心化提供源数据展示,并将数据校验指纹上链,并提供数据校验的工具给用户方,用户可随时进行比对校验。

隐私数据

如果数据量小的话,可以将数据本地加密推送上链,并通过共享加密策略指定相关用户可以解密查看。对于数据量较大的数据,数据验证指纹上链,通过中心化授权系统,指定相关用户可授权访问中心化源数据。

项目策略选定

对于目前传统稍大型项目,一些相关数据较多,且不易公开,并且用户关心点并不是必须完全去中心化。可以优先选定策略为“相对去中心化”,如果只关心资产交易的话,可以选择“资产去中心化”。对于数据的去中心化可以选择大数据量方案,可灵活控制访问授权。

项目实现所需准备

根据具体产品逻辑再定。