1. 程式人生 > >(一)eos開發實戰dapp+遊戲--環境搭建

(一)eos開發實戰dapp+遊戲--環境搭建

     開言:此教材只是個人學習過程記錄自己理解和各種坑如有問題可提出修正,個人注重是開發動手,小白,寫也是為了重複加深印象,目標此教學習實現開發一個EOS小遊戲,堅持.......
    為什麼:技術本身就是為產品服務,有需求(遊戲)才學習,進步才快,動手打個helloWorkd比你看一百遍強。選擇EOS原因就是被坑了(說笑),真是原因,看了EOS的白皮書和我們需求吻合,一個字快!但是總覺EOS並非正真正的去中心化,21個超級節點,暫時先這樣吧。

    環境: VMware + Ubuntu+EOS-1.3.0
    廢話不多說,做過開發都知道環境搭建是第一環節。
    (1).使用EOS原始碼進行編譯。這個網上已經有很多,我也編譯過成功了但是不要小看就兩個命令,估計不熟悉的搞你幾天都未必成功。遇到各種坑不過只要你肯百度多問基本都能解決都是配置缺少lib。

         1.git clone https://github.com/eosio/eos --recursive

         2.cd eos

           ./build.sh ubuntu

    (2).(推薦)個人推薦使用第二種環境docker開發環境。原因簡單早已經幫你配置好了映象,快速,少踩坑。

        0.所有操作都是在超級許可權下sudo su 

       1.docker pull eosio/eos-dev 或者docker pull eosio/eos 。這兩者區別就是eos-dev裡面帶有一些編譯好的工具個人使用時eos-dev.

        2.docker images 檢視是否已經成功下載完成(之前需要等待)。

        

      (3)啟動節點。eos官方有教程如何啟動百度下總會。

              我的啟動方式:./start_ubuntu.sh     (一個命令能解決的問題就不要多事,哈哈,多想想如何簡化開發流程)

              

       說明:上面的紅點,黃點忽略吧不影響學習,也會遇到啟動問題,後說。

       下面就是start_ubuntu.sh的程式碼自己根據自己需求修改:

#!/bin/bash
echo "start nodeos !"

/usr/bin/docker run --rm --name nodeos -v /home/xing/Desktop/eos-master/Docker/path-to-data-dir:/opt/eosio/bin/data-dir -p 8888:8888 -p 9876:9876 -t eosio/eos-dev nodeosd.sh --max-transaction-time=1000 -e --http-alias=nodeos:8888 --http-alias=127.0.0.1:8888 --http-alias=localhost:8888 arg1 arg2

大概說下吧。

#!/bin/bash 這句不能刪除,大概意思就是使用shell來解釋執行,深挖的人可以自己去看下shell程式設計。

echo 相當於print輸出

最後就是重點。其實就是使用docker執行eos, run不多說跑起來,--rm 就是使用docker stop 停止容器後會自動刪除資料(按需),--name指定容器的名稱 ,-v對映位置(這個不知道對其它人來說重要但是我覺最後對映下可以看到config.ini檔案),-p 對映埠 , -t 執行容器名稱就是上面docker images裡面的容器, nodeosd.sh 執行eos-master/Docker/nodeosd.sh 這個檔案稍微看下就知道其實就是複製config.ini,和合約到/data-dir 最後執行 nodeos命令啟動節點(eos三大命令之一),--max-transaction-time...後面就是啟動引數。

     啟動遇到問題:

                                      1.Error 3080006: transaction took too long。解決:nodeos程式啟動時新增max-transaction-time即可解決這個問題,也就是上面我sh裡面新增的。

 2. Dynamic exception type: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::unknown_option> >
std::exception::what: unrecognised option 'wallet-dir'。解決:這個巨坑坑我一天。去看eos的release的說明,居然去了。好吧,得出一個結論有時候遇到不可解決的bug去看官方給出的改動。問題來了如何去掉wallet-dir呢,方法第一進入容器,我選第二種啟動一次nodes把config.ini對映到了自己目錄下就是上-v。一個命令sudo getdit config.ini (注意必須是sudo 超級許可權下不然修改不了)

            

   3.enable-stale-production = true  修改config.ini

   4.database dirty flag set (likely due to unclean shutdown): replay required
    解決:刪除 /opt/eosio/bin/data-dir 下多餘的塊 啟動時候新增--replay-blockchain

很好這樣就算修改完了,再次執行。 當然過程中還會遇到其它我問題,多問,看找就能解決。enjoy,看到這估計你也入坑了。