Linux或者Mac环境安装Photon network

96
rectinajh
1.1 2018.10.31 12:12 字数 704

官方安装文档:
https://photonnetwork.readthedocs.io/en/latest/installation_guide/

下载源码:
https://github.com/SmartMeshFoundation/Spectrum
https://github.com/SmartMeshFoundation/Photon

流程是:
1,go安装及配置
2,安装运行spectrum
3,下载运行photon

GO安装及配置

  • 下载地址 https://golang.org/dl/

  • 进行安装

    步骤:打开终端  → 进入local目录 → 下载压缩包 → 
         解压到当前目录 → 删除压缩包 → 创建gopath(后续开发项目目录) → 
         进入gopath → 创建 bin src pkg
    
    #Linux执行
    注意: 必须安装在 /usr/local/ 目录下,因为GOROOT必须为/usr/local/go
    cd /usr/local
    wget https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz   
    tar zxvf go go1.9.7.linux-amd64.tar.gz
    rm go1.9.7.linux-amd64.tar.gz   
    mkdir gopath
    cd gopath
    mkdir -p bin src pkg
    
    

GO环境变量配置

  • 配置环境

     vim ~/.bashrc
     vim /etc/profile
    #尾部添加,全是大写
    #根目录
    export GOROOT=/usr/local/go
    #bin目录
    export GOBIN=$GOROOT/bin
    #工作目录
    export GOPATH=/usr/local/gopath
    export PATH=$PATH:$GOPATH:$GOBIN:$GOPATH
    
    #退出保存,
    source ~/.bashrc生效
    #执行
    go env
    
    

安装运行Spectrum链

详细教程如下:
Spectrum链开发 -- Mac开发环境搭建
https://www.jianshu.com/p/078ccfcfb001

Spectrum链开发--Linux环境搭建
https://www.jianshu.com/p/92d067c44b3c

启动Spectrum链:

mkdir smclog testnetdata

 ls
Photon  smc  smc-linux-amd64  smc-linux-amd64-0.5.1.tar.gz  smclog  Spectrum  testnetdata

sudo ./smc-linux-amd64  --datadir=/home/ubuntu/testnetdata/ --testnet --ws --wsapi  "eth,admin,web3,net,debug,personal"   --rpc  --rpccorsdomain "*" --rpcapi "eth,admin,web3,net,debug,personal"   --wsaddr "0.0.0.0" --rpcaddr "0.0.0.0"   --wsorigins "*" console
INFO [10-30|18:29:47] Starting peer-to-peer node               instance=Smc/v0.5.1-release-f085b369/linux-amd64/go1.10.1
INFO [10-30|18:29:47] Allocated cache and file handles         database=/home/ubuntu/testnetdata/smc/chaindata cache=128 handles=1024
INFO [10-30|18:29:47] Initialised chain configuration          config="{ChainID: 3 Homestead: 0 DAO: <nil> DAOSupport: true EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: 62678 Engine: tribe}"
INFO [10-30|18:29:47] Initialising Ethereum protocol           versions="[63 62]" network=3
INFO [10-30|18:29:47] Loaded most recent local header          number=1207096 hash=5c7bd6…488789 td=3066556
INFO [10-30|18:29:47] Loaded most recent local full block      number=1207096 hash=5c7bd6…488789 td=3066556
INFO [10-30|18:29:47] Loaded most recent local fast block      number=1207096 hash=5c7bd6…488789 td=3066556
INFO [10-30|18:29:47] Loaded local transaction journal         transactions=0 dropped=0
INFO [10-30|18:29:47] Regenerated local transaction journal    transactions=0 accounts=0
WARN [10-30|18:29:47] Blockchain not empty, fast sync disabled 
INFO [10-30|18:29:47] Starting P2P networking 
INFO [10-30|18:29:49] UDP listener up                          self=enode://7d2541c024906b566e9399694a5e12c238d1733cf47c5adee60ec6fcc542d1d544d003c03c462b1aa850fc9b41c6627ae7e3f9285f6b28c7ef5b6053dcec25a9@[::]:60303
INFO [10-30|18:29:49] HTTP endpoint opened: http://0.0.0.0:18545 
INFO [10-30|18:29:49] WebSocket endpoint opened: ws://[::]:18546 
INFO [10-30|18:29:49] RLPx listener up                         self=enode://7d2541c024906b566e9399694a5e12c238d1733cf47c5adee60ec6fcc542d1d544d003c03c462b1aa850fc9b41c6627ae7e3f9285f6b28c7ef5b6053dcec25a9@[::]:60303
INFO [10-30|18:29:49] init tribe.status when chiefservice start end. getnodekey=true
INFO [10-30|18:29:49] IPC endpoint opened: /home/ubuntu/testnetdata/smc.ipc 
INFO [10-30|18:29:49] init tribe.status success. 
Welcome to the Geth JavaScript console!

instance: Smc/v0.5.1-release-f085b369/linux-amd64/go1.10.1
coinbase: 0xbcb48ef81630c6ca138eebbb8dabb938ec464ff9
at block: 1207096 (Tue, 30 Oct 2018 18:05:55 CST)
 datadir: /home/ubuntu/testnetdata
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 tribe:1.0 txpool:1.0 web3:1.0

> INFO [10-30|18:29:59] Block synchronisation started 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
::: ORIGIN ::: origin= 1207096 height= 1207199
::: ORIGIN ::: d.syncStatsChainHeight= 1207199 current= 1207096
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
---- FullSync ---->
INFO [10-30|18:30:00] -> num=1207098 , diff=3 , hash=0x519146afa188bc868347f86fc5eefda47d27e07f2d020d75f504edee514d0f82 , miner=0x4110bD1fF0b73fa12C259acF39C950277f266787 
INFO [10-30|18:30:00] [ downloader ] ==> importBlockResults() 1207097 --> 1207098. 

安装运行Photon 光子网路

go get github.com/SmartMeshFoundation/Photon/
cd /usr/local/gopath/github.com/SmartMeshFoundation/Photon/

ubuntu@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon$ ls
accounts        encoding           mkdocs.yml    photonService.go  smoketest.sh
ackhelper.go    eventhandler.go    mobile        README.md         testdata
blockchain      feepolicy.go       models        req.go            transfer
channel         goclean.sh         network       rerr              utils
cmd             internal           notify        restful           vendor
codefortest     log                params        restore.go
codefortest.go  Makefile           pfsproxy      rungotest.sh
docs            messagehandler.go  photonapi.go  runpprof.sh


更新到最新的代码:
root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon# git pull
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 41 (delta 20), reused 40 (delta 20), pack-reused 0
Unpacking objects: 100% (41/41), done.
From https://github.com/SmartMeshFoundation/Photon
   9c0f89b..90602a9  master     -> origin/master
 * [new tag]         v0.91      -> v0.91
Updating 9c0f89b..90602a9
Fast-forward
 Makefile                    |  3 ++-
 cmd/photon/build.sh         |  9 +++++++++
 cmd/photon/buildall.sh      | 30 ++++++++++++++++++++++++++++++
 cmd/photon/mainimpl/impl.go |  7 +++++--
 docs/installation_guide.md  |  7 +++++--
 docs/mobile_api_zh.md       |  2 +-
 mobile/build.sh             | 19 +++++++------------
 mobile/build_android.sh     | 10 ++++------
 mobile/build_iOS.sh         |  8 ++------
 9 files changed, 65 insertions(+), 30 deletions(-)
 create mode 100755 cmd/photon/build.sh
 create mode 100755 cmd/photon/buildall.sh

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon# ls
accounts      cmd             encoding         internal           mkdocs.yml  notify        photonService.go  restful       smoketest.sh  vendor
ackhelper.go  codefortest     eventhandler.go  log                mobile      params        README.md         restore.go    testdata
blockchain    codefortest.go  feepolicy.go     Makefile           models      pfsproxy      req.go            rungotest.sh  transfer
channel       docs            goclean.sh       messagehandler.go  network     photonapi.go  rerr              runpprof.sh   utils

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon# cd cmd/photon/

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/cmd/photon# ls
buildall.sh  build.sh  main.go  mainimpl
root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/cmd/photon# ./build.sh 
90602a99958e25b71218784bb3ba9254de790675
root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/cmd/photon# ls
buildall.sh  build.sh  main.go  mainimpl  photon

photon即我们的可执行文件

或者
wget https://github.com/SmartMeshFoundation/Photon/releases 目录获得最新编译的程序
屏幕快照 2018-10-31 上午11.06.01.png

编译生成iOS或者安卓的sdk

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/mobile# ls
api.go  build_android.sh  build_iOS.sh  build.sh  main.go  mobile_test.go  primitives.go
root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/mobile# ./build_iOS.sh 
90602a99958e25b71218784bb3ba9254de790675
goversiongo1.9.7linux/amd64
TueOct30145225CST2018

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/mobile# ./build_android.sh 
90602a99958e25b71218784bb3ba9254de790675
goversiongo1.9.7linux/amd64
TueOct30145238CST2018
0.91

运行Photon

在keystore创建密码登录密码,spectrum创建的用户名
cd /home/ubuntu/testnetdata/keystore
UTC--2018-10-30T07-26-23.224590191Z--9dabc8a16b179b9521c68243200492a5ca0e5630
输入spectrum创建的用户名密码
root@VM-0-16-ubuntu:/home/ubuntu/testnetdata/keystore# touch pass.txt
root@VM-0-16-ubuntu:/home/ubuntu/testnetdata/keystore# ls
pass.txt
UTC--2018-10-30T07-26-23.224590191Z--9dabc8a16b179b9521c68243200492a5ca0e5630
root@VM-0-16-ubuntu:/home/ubuntu/testnetdata/keystore# vi pass.txt 
root@VM-0-16-ubuntu:/home/ubuntu/testnetdata/keystore# ls
pass.txt
UTC--2018-10-30T07-26-23.224590191Z--9dabc8a16b179b9521c68243200492a5ca0e5630
root@VM-0-16-ubuntu:/home/ubuntu/testnetdata/keystore# ls
pass.txt
UTC--2018-10-30T07-26-23.224590191Z--9dabc8a16b179b9521c68243200492a5ca0e5630

启动命令详解:

root@VM-0-16-ubuntu:/usr/local/gopath/src/github.com/SmartMeshFoundation/Photon/cmd/photon# ./photon -help
GoVersion=goversiongo1.9.7linux/amd64
GitCommit=90602a99958e25b71218784bb3ba9254de790675
builddate=TueOct3014:49:49CST2018Version=0.91
os.args=["photon" "-help"]
photon [global options] command [command options] [arguments...]

VERSION:
   0.91

COMMANDS:
   help  Shows a list of commands or help for one command
   
GLOBAL OPTIONS:
   --address value                             The ethereum address you would like photon to use and for which a keystore file exists in your local system.
   --keystore-path "/root/.ethereum/keystore"  If you have a non-standard path for the ethereum keystore directory provide it using this argument. 
   --eth-rpc-endpoint value                    "host:port" address of ethereum JSON-RPC server.\n'
                                                          'Also accepts a protocol prefix (ws:// or ipc channel) with optional port', (default: "/root/.ethereum/geth.ipc")
   --registry-contract-address value           hex encoded address of the registry contract.
   --listen-address value                      "host:port" for the photon service to listen on. (default: "0.0.0.0:40001")
   --api-address value                         host:port" for the RPC server to listen on. (default: "127.0.0.1:5001")
   --datadir "/root/.photon"                   Directory for storing photon data.
   --password-file value                       Text file containing password for provided account
   --debugcrash                                enable debug crash feature
   --conditionquit value                       quit at specified point for test
   --nonetwork                                 disable network, for example ,when we want to settle all channels
   --fee                                       enable mediation fee
   --xmpp                                      use xmpp as transport
   --xmpp-server value                         use another xmpp server  (default: "193.112.248.133:5222")
   --ignore-mediatednode-request               this node doesn't work as a mediated node, only work as sender or receiver
   --enable-health-check                       enable health check
   --matrix-server value                       use another matrix server
   --matrix                                    use matrix as transport
   --reveal-timeout value                      channels' reveal timeout, default 10 (default: 10)
   --pfs value                                 pathfinder service host
   --verbosity value                           Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=trace (default: 3)
   --vmodule value                             Per-module verbosity: comma-separated list of <pattern>=<level> (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
   --logfile value                             redirect log to this the given file
   --help, -h                                  show help
   --version, -v                               print the version

sudo ./photon --datadir=.photon --api-address=0.0.0.0:5001 --listen-address=0.0.0.0:40001 --address=9dabc8a16b179b9521c68243200492a5ca0e5630 --keystore-path /home/ubuntu/testnetdata/keystore --registry-contract-address 0xb3aE919aB595f5844cba80499ee6423688E06F89 --password-file jianghua --eth-rpc-endpoint ws://0.0.0.0:18546

--datadir 缓存目录
--eth-rpc-endpoint 这个参数是是smc节点的ip,如果是本地节点ws://0.0.0.0:18546是可以的,如果部署在服务器上,缓存运行smc的ip既可。


sudo ./photon --datadir=.photon --api-address=0.0.0.0:5001 --listen-address=192.168.0.145:40001 --address=9dabc8a16b179b9521c68243200492a5ca0e5630 --keystore-path /home/ubuntu/testnetdata/keystore --registry-contract-address 0xb3aE919aB595f5844cba80499ee6423688E06F89 --password-file jianghua --eth-rpc-endpoint ws://0.0.0.0:18546
GoVersion=goversiongo1.9.7linux/amd64
GitCommit=90602a99958e25b71218784bb3ba9254de790675
builddate=TueOct3014:49:49CST2018Version=0.91
os.args=["photon" "--datadir=.photon" "--api-address=0.0.0.0:5001" "--listen-address=192.168.0.145:40001" "--address=9dabc8a16b179b9521c68243200492a5ca0e5630" "--keystore-path" "/home/ubuntu/testnetdata/keystore" "--registry-contract-address" "0xb3aE919aB595f5844cba80499ee6423688E06F89" "--password-file" "jianghua" "--eth-rpc-endpoint" "ws://0.0.0.0:18546"]
INFO [10-30|17:37:50.303] Welcome to photon,version 0.91
 
INFO [10-30|17:37:50.303] os.args=["photon" "--datadir=.photon" "--api-address=0.0.0.0:5001" "--listen-address=192.168.0.145:40001" "--address=9dabc8a16b179b9521c68243200492a5ca0e5630" "--keystore-path" "/home/ubuntu/testnetdata/keystore" "--registry-contract-address" "0xb3aE919aB595f5844cba80499ee6423688E06F89" "--password-file" "jianghua" "--eth-rpc-endpoint" "ws://0.0.0.0:18546"] 
INFO [10-30|17:37:51.384] Start with account 0x9DAbC8A16B179B9521c68243200492A5ca0e5630 
2018/10/30 17:37:51 [impl.go:198] [I] ethclient connection status changed from 0 to 1
INFO [10-30|17:37:51.419] create photon service registry=0xb3aE919aB595f5844cba80499ee6423688E06F89,node=0x9DAbC8A16B179B9521c68243200492A5ca0e5630 
ERROR[10-30|17:37:51.422] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
INFO [10-30|17:37:51.668] changeStatus from 0 to 1                 matrix=9dab
ERROR[10-30|17:37:52.422] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
INFO [10-30|17:37:53.331] get state change since 0 
WARN [10-30|17:37:53.337] AlarmTask missed 1206974 blocks 
ERROR[10-30|17:37:53.423] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
ERROR[10-30|17:37:54.423] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
INFO [10-30|17:37:55.403] NewTokenAdd token=0xF0123C3267Af5CbBFAB985d39171f5F5758C0900,tokennetwork=0x3b5AdD6F9164B51DB2Ee0126D43Df06207d91f5d 
INFO [10-30|17:37:55.403] Photon Startup complete and history events process complete. 
INFO [10-30|17:37:55.409] NewChannel tokenNetwork=3b5a,token=f012,participant1=e011,participant2=8330 
INFO [10-30|17:37:55.415] NewChannel tokenNetwork=3b5a,token=f012,participant1=e011,participant2=d8d7 
INFO [10-30|17:37:55.423] NewChannel tokenNetwork=3b5a,token=f012,participant1=fb07,participant2=e011 
ERROR[10-30|17:37:55.423] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
INFO [10-30|17:37:55.426] NewChannel tokenNetwork=3b5a,token=f012,participant1=70ae,participant2=810a 
INFO [10-30|17:37:55.432] NewChannel tokenNetwork=3b5a,token=f012,participant1=fb07,participant2=e5a8 
INFO [10-30|17:37:55.437] NewChannel tokenNetwork=3b5a,token=f012,participant1=fb07,participant2=e011 
INFO [10-30|17:37:55.441] NewChannel tokenNetwork=3b5a,token=f012,participant1=e5a8,participant2=e011 
INFO [10-30|17:37:55.453] NewChannel tokenNetwork=3b5a,token=f012,participant1=fb07,participant2=d8d7 
INFO [10-30|17:37:55.456] NewChannel tokenNetwork=3b5a,token=f012,participant1=e5a8,participant2=d8d7 
ERROR[10-30|17:37:56.424] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
ERROR[10-30|17:37:57.424] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 
ERROR[10-30|17:37:58.424] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address 

错误总结

1,tyring to reconnect geth

image.png

解决方案:查看启动spectrum的时候,没有启动HTTP endpoint opened的18545和webSocket的服务。

image

2,启动smartRaiden时候,cannot create or open db,makesure you have write permission
image

解决方案:1,清空spectrum的节点datadir缓存数据,2,关闭terminal,3,重新启动spectrum和smartRaiden。

3,spectrum一直卡着没动
image

解决方案:情况的spectrum节点缓存datadir里面的数据,每次启动spectrum他都会同步节点数据。

4,没有链上公链

image.png

解决方案:查看spectrum公链运行情况。

5,ERROR[10-30|17:39:50.463] listen udp 192.168.0.145:40001 error listen udp 192.168.0.145:40001: bind: cannot assign requested address

屏幕快照 2018-10-31 下午12.01.52.png

解决方案:
--listen-address=192.168.0.145:40001换成0.0.0.0:40001
--eth-rpc-endpoint 这个参数是是smc节点的ip,如果是本地节点ws://0.0.0.0:18546是可以的,如果部署在服务器上,缓存运行smc的ip既可。

区块链的技术世界
Gupao