区块链技术的搭建过程详解

技术图

编程实现
(1)Nodejs/Javascript
Nodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的express开发框架,基于http协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少。
(2)Go
在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用Go和JavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。

安装以太坊的开发环境(ubutu的桌面安装):

安装教程地址:https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

1、安装命令:

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum / ethereumsudo apt-get updatesudo apt-get install ethereum

2  、geth命令操作:

1、节点创建一个用户:

geth account new

2、列出 当前账户:

geth account list

3、指定开发环境:

geth --datadir "~/ethdew" --dev

3、日志打印:

geth --dev console 2 >> file_log_out

4、显示账户:

eth.accounts

5、创建用户:

personal.newAccount('123456')

6、获取账户余额:

user1= eth.accounts[0]user2= eth.accounts[2]
eth.getBalance(user1)eth.getBalance(user2)

7、查看多少区块

eth.blockNumber

       8、挖矿

miner.start()

9、转账

eth.sendTransaction({from:user1, to:user2,  value : web3.toWei(3,"ether")})

10、解锁

personal.unlockAccount("account","password")

11、帮助

$ geth helpNAME:geth - the go-ethereum command line interface
Copyright 2013-2017 The go-ethereum Authors
USAGE: geth [options] command [command options] [arguments...]
VERSION: 1.7.3-stable
 COMMANDS:    account     Manage accounts    attach      Start an interactive JavaScript environment (connect to node)     bug         opens a window to report a bug on the geth repo    console     Start an interactive JavaScript environment    copydb      Create a local chain from a target chaindata folder        dump        Dump a specific block from storage    dumpconfig  Show configuration values    export      Export blockchain into file    import      Import a blockchain file    init        Bootstrap and initialize a new genesis block    js          Execute the specified JavaScript files    license     Display license information    makecache   Generate ethash verification cache (for testing)    makedag     Generate ethash mining DAG (for testing)    monitor     Monitor and visualize node metrics    removedb    Remove blockchain and state databases    version     Print version numbers    wallet      Manage Ethereum presale wallets    help, h     Shows a list of commands or help for one command
ETHEREUM OPTIONS:  --config value                        TOML configuration file  --datadir "/home/karalabe/.ethereum"  Data directory for the databases and keystore  --keystore                            Directory for the keystore (default = inside the datadir)  --nousb                               Disables monitoring for and managing USB hardware wallets  --networkid value                     Network identifier (integer, 1=Frontier, 2=Morden (disused), 3=Ropsten, 4=Rinkeby) (default: 1)  --testnet                             Ropsten network: pre-configured proof-of-work test network  --rinkeby                             Rinkeby network: pre-configured proof-of-authority test network  --syncmode "fast"                   区块链 sync mode ("fast", "full", or "light")  --ethstats value                      Reporting URL of a ethstats service (nodename:secret@host:port)  --identity value                      Custom node name  --lightserv value                     Maximum percentage of time allowed for serving LES requests (0-90) (default: 0)  --lightpeers value                    Maximum number of LES client peers (default: 20)  --lightkdf                            Reduce key-derivation RAM & CPU usage at some expense of KDF strength
DEVELOPER CHAIN OPTIONS:  --dev               Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled  --dev.period value  Block period to use in developer mode (0 = mine only if transaction pending) (default: 0)
ETHASH OPTIONS:  --ethash.cachedir                         Directory to store the ethash verification caches (default = inside the datadir)  --ethash.cachesinmem value                Number of recent ethash caches to keep in memory (16MB each) (default: 2)  --ethash.cachesondisk value               Number of recent ethash caches to keep on disk (16MB each) (default: 3)  --ethash.dagdir "/home/karalabe/.ethash"  Directory to store the ethash mining DAGs (default = inside home folder)  --ethash.dagsinmem value                  Number of recent ethash mining DAGs to keep in memory (1+GB each) (default: 1)  --ethash.dagsondisk value                 Number of recent ethash mining DAGs to keep on disk (1+GB each) (default: 2)
TRANSACTION POOL OPTIONS:  --txpool.nolocals            Disables price exemptions for locally submitted transactions  --txpool.journal value       Disk journal for local transaction to survive node restarts (default: "transactions.rlp")  --txpool.rejournal value     Time interval to regenerate the local transaction journal (default: 1h0m0s)  --txpool.pricelimit value    Minimum gas price limit to enforce for acceptance into the pool (default: 1)  --txpool.pricebump value     价格bump percentage to replace an already existing transaction (default: 10)  --txpool.accountslots value  Minimum number of executable transaction slots guaranteed per account (default: 16)  --txpool.globalslots value   Maximum number of executable transaction slots for all accounts (default: 4096)  --txpool.accountqueue value  Maximum number of non-executable transaction slots permitted per account (default: 64)  --txpool.globalqueue value   Maximum number of non-executable transaction slots for all accounts (default: 1024)  --txpool.lifetime value      Maximum amount of time non-executable transaction are queued (default: 3h0m0s)
PERFORMANCE TUNING OPTIONS:  --cache value            Megabytes of memory allocated to internal caching (min 16MB / database forced) (default: 128)  --trie-cache-gens value  Number of trie node generations to keep in memory (default: 120)
ACCOUNT OPTIONS:  --unlock value    Comma separated list of accounts to unlock  --password value  Password file to use for non-interactive password input
API AND CONSOLE OPTIONS:  --rpc                  Enable the HTTP-RPC server  --rpcaddr value        HTTP-RPC server listening interface (default: "localhost")  --rpcport value        HTTP-RPC server listening port (default: 8545)  --rpcapi value         API's offered over the HTTP-RPC interface  --ws                   Enable the WS-RPC server  --wsaddr value         WS-RPC server listening interface (default: "localhost")  --wsport value         WS-RPC server listening port (default: 8546)  --wsapi value          API's offered over the WS-RPC interface  --wsorigins value      Origins from which to accept websockets requests  --ipcdisable           Disable the IPC-RPC server  --ipcpath              Filename for IPC socket/pipe within the datadir (explicit paths escape it)  --rpccorsdomain value  Comma separated list of domains from which to accept cross origin requests (browser enforced)  --jspath loadScript    JavaScript root path for loadScript (default: ".")  --exec value           Execute JavaScript statement  --preload value        Comma separated list of JavaScript files to preload into the console
NETWORKING OPTIONS:  --bootnodes value     Comma separated enode URLs for P2P discovery bootstrap (set v4+v5 instead for light servers)  --bootnodesv4 value   Comma separated enode URLs for P2P v4 discovery bootstrap (light server, full nodes)  --bootnodesv5 value   Comma separated enode URLs for P2P v5 discovery bootstrap (light server, light nodes)  --port value          Network listening port (default: 30303)  --maxpeers value      Maximum number of network peers (network disabled if set to 0) (default: 25)  --maxpendpeers value  Maximum number of pending connection attempts (defaults used if set to 0) (default: 0)  --nat value           NAT port mapping mechanism (any|none|upnp|pmp|extip:) (default: "any")  --nodiscover          Disables the peer discovery mechanism (manual peer addition)  --v5disc              Enables the experimental RLPx V5 (Topic Discovery) mechanism  --netrestrict value   Restricts network communication to the given IP networks (CIDR masks)  --nodekey value       P2P node key file  --nodekeyhex value    P2P node key as hex (for testing)
MINER OPTIONS:  --mine                    Enable mining  --minerthreads value      Number of CPU threads to use for mining (default: 8)  --etherbase value         Public address for block mining rewards (default = first account created) (default: "0")  --targetgaslimit value    Target gas limit sets the artificial target gas floor for the blocks to mine (default: 4712388)  --gasprice "18000000000"  Minimal gas price to accept for mining a transactions  --extradata value         Block extra data set by the miner (default = client version)
GAS PRICE ORACLE OPTIONS:  --gpoblocks value      Number of recent blocks to check for gas prices (default: 10)  --gpopercentile value  Suggested gas price is the given percentile of a set of recent transaction gas prices (default: 50)
VIRTUAL MACHINE OPTIONS:  --vmdebug  Record information useful for VM and contract debugging
LOGGING AND DEBUGGING OPTIONS:  --metrics                 Enable metrics collection and reporting  --fakepow                 Disables proof-of-work verification  --nocompaction            Disables db compaction after import  --verbosity value         Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)  --vmodule value           Per-module verbosity: comma-separated list of = (e.g. eth/*=5,p2p=4)  --backtrace value         Request a stack trace at a specific logging statement (e.g. "block.go:271")  --debug                   Prepends log messages with call-site location (file and line number)  --pprof                   Enable the pprof HTTP server  --pprofaddr value         pprof HTTP server listening interface (default: "127.0.0.1")  --pprofport value         pprof HTTP server listening port (default: 6060)  --memprofilerate value    Turn on memory profiling with the given rate (default: 524288)  --blockprofilerate value  Turn on block profiling with the given rate (default: 0)  --cpuprofile value        Write CPU profile to the given file  --trace value             Write execution trace to the given file
WHISPER (EXPERIMENTAL) OPTIONS:  --shh                       Enable Whisper  --shh.maxmessagesize value  Max message size accepted (default: 1048576)  --shh.pow value             Minimum POW accepted (default: 0.2)
DEPRECATED OPTIONS:  --fast   Enable fast syncing through state downloads  --light  Enable light client mode
MISC OPTIONS:  --help, -h  show help

COPYRIGHT:   Copyright 2013-2017 The go-ethereum Authors

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢