オープンソースのブロックチェーンを試す(4) - Ethereum(イーサリアム)の起動

今回はEthereumの起動を行います。

ジェネシス・ブロックの準備

まずは、Ethereum起動の前準備としてジェネシス・ブロックを用意する必要があります。

[ジェネシス・ブロック genblock.json]

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"config": {
"chainId": 1100
},
"nonce": "0x0000000000000033",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x8000000",
"difficulty": "0x100",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}

環境の初期化

次に下記のコマンドを実行し、環境の初期化を行います。

datadirオプションにはデータを保存するディレクトリを指定します。

initには作成したジェネシス・ブロック(genblock.json)を指定します。

[Ethereum初期化コマンド]

1
geth --datadir ./data init ./genblock.json

[実行結果]

Ethereumの起動

初期化が完了したら、いよいよEthereumの起動を行います。

下記コマンドを実行します。

なおnetworkidオプションには、genblock.jsonのchainIdで設定した値と同じものを指定します。

[Ethereum起動コマンド]

1
geth --networkid "1100" --datadir ./data  console

[実行結果]

致命的なエラーとなり、うまく起動できませんでした。

調べたところWSL環境ではソケットのListenができないために、Ethereumが起動できないようです😢

次回は、WSLではなくLinux環境を構築し、再びEthereum環境の起動をトライします。

オープンソースのブロックチェーンを試す(3) - Ethereum(イーサリアム)用プログラム作成

前回記事にてEthereumを使う準備が整いました。

Ethereum環境については、本番環境ではなくプライベート・ネットワーク(テスト用)を使います。

またネットワークに接続するコンピュータの数を0に設定し、自分一人がローカルで動作するモードとします。

プログラムの準備

スマート・コントラクトは、契約の自動化を目的としたものではありますが、プログラムの実行環境でもあります。

今回はデータを保存処理を組み込んでいきます。

データを保存するプログラムは以下の通りです。

プログラムはSolidityというEthereumの独自言語です。

[ソース savedata.sol]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pragma solidity ^0.8.4;

contract SingleNumRegister {

uint storedData;

function set(uint x) public{
storedData = x;
}

function get() public view returns (uint retVal) {
return storedData;
}

}

Solidityコンパイラの準備

ソースをビルドするためには、solcコマンドが必要なのでインストールします。

[コマンド]

1
2
sudo apt-get install solc
solc --version

[結果]
solcバージョン確認結果

プログラムのビルド

solcコンパイラが準備できたので、準備したプログラム(savedata.sol)を下記コマンドでビルドします。

[コマンド]

1
solc -o savedata --abi --bin savedata.sol

正常にビルドできると次のような2ファイルが生成されます。

  • savedata/SingleNumRegister.abi

    SingleNumRegister.abi
  • savedata/SingleNumRegister.bin

    SingleNumRegister.bin

次回は、Ethereum環境の起動を行います。

オープンソースのブロックチェーンを試す(2) - Ethereum(イーサリアム)の環境構築

オフィシャル・リリースであるgo-ethereumを使って、Ethereumの環境を構築します。

ソースからビルドする方法もありますが、今回はパッケージを使用してインストールします。

パッケージを利用してインストール

WSLコンソールでgo-ethereumをインストールしていきます。

まずはリポジトリ追加のコマンドとethereumリポジトリの追加を行います。

[コマンド]

1
2
3
4
sudo apt-get install apt-file
sudo apt-file update
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum

Ethereum gethコマンドのインストール

Ethereum gethコマンドをインストールします。

[コマンド]

1
2
3
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ethereum

gethコマンドのバージョン確認

go-ethereumがインストールできていることを確認するために、gethコマンドのバージョンを確認します。

[コマンド]

1
geth version

[結果]

次回は、Ethereum環境の起動を行います。

Kindle出版 - WSLでLaTexファイルをepubファイルに変換

通常本を出版する場合、印税が5%~10%程度ですが、Amazonの電子書籍で出版すると70%のロイヤリティが得られるということです。
(地域によってロイヤリティが変わるようですが、日本は70%みたいです)

つまり売り上げの7割を収入として得られることになり、通常本の出版に比べて7倍から14倍の収益率となります。

そこで本の内容はともかく、Kindleの電子書籍を出版する方法(手順)を調べてみました。
(全部無料で使えるものです。)

電子書籍作成フロー

いろいろ調べたところ、次のように電子書籍を作成することにしました。

  1. LaTexファイルで本を作成
  2. pandocでLaTexファイルをepubファイルに変換
  3. Kindle Previewer 3で表示確認
  4. Amazon Kindle Direct Publishingで出版

1. LaTexファイルで本を作成

LaTexを使って本を作成します。

LaTexは最強の文書整形システムと言われており、綺麗な文章を書きたい人、綺麗な数式を書きたい人、化学式を綺麗に書きたい人に好まれて使用されています。

Wordを使うよりも、はるかに作業しやすくとにかく綺麗な文章が書けるのでおススメなのですが、慣れない人にはその良さは伝わりにくいかと思います。

Sigilというフリーツールを使って、epubファイルを作るという方法もありました。
 こちらの方法が一般的かもしれません。)

まずWSLのコンソールを開いて、下記コマンドを実行しLaTex環境をインストールします。

[コマンド]

1
2
3
sudo apt install language-pack-ja manpages-ja manpages-ja-dev nkf
sudo apt install build-essential x11-apps emacs emacs-mozc fcitx-mozc
sudo apt install gtypist typespeed texlive-lang-japanese evince

次にsample.texというLaTexファイルを作成します。

[sample.tex]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\documentclass{article}
\title{テスト}
\author{名前}
\date{\today}

\begin{document}

$ x = a $ から \( x = b \) までの関数 $f(x)$ の積分は
\begin{math}
\int^{b}_{a} f(x) dx = \lim_{n \to \infty} \sum^{n-1}_{i=0} f(x_{i}) \Delta x
\end{math}
と置き換えて考えることができる.

\end{document}

sample.texをコンパイルして、pdfファイルを出力します。

[コマンド]

1
2
platex sample.tex
dvipdf sample.dvi

次のようなpdfファイルが出力されます。

[出力されたpdf]
sample.pdf

やはりLaTexは数式がきれいに表示されて気持ちがいいです。

2. pandocでLaTexファイルをepubファイルに変換

pandocというツールを使うと、いろいろな文書形式のファイルを相互に変換することができます。

今回はLaTexファイルをepubファイルに変換します。

まずは次のコマンドを実行しpandocをインストールします。

[コマンド]

1
sudo apt install pandoc

pandocコマンドを使ってtexファイルをepubファイルに変換します。

[コマンド]

1
LANG=ja_JP.UTF-8;pandoc sample.tex -o sample.epub

※次項目でのepubファイルを開く際に、言語に関するメタデータがないというエラーがでたため、変換前に言語設定(LANG=ja_JP.UTF-8)を行っています。

3. Kindle Previewerで表示確認

下記サイトからKindle Previewerをダウンロードし、インストールを行います。

Kindle Previewer

作成したepubファイルを開いて表示を確認します。

Kindle Previewerでの表示

pdfとは少し表示が異なっていますが、Kindle Previewerでの表示が出版した時の正しい表示となると思います。

というとで、今回の手順で本を作成する方法を簡単にまとめます。

  1. texファイルを編集
  2. platexコマンドでtexファイルに問題がないことを確認
  3. pandocコマンドでtexファイルをepubファイルに変換
  4. Kindle Previewerでepubファイルの表示を確認

本を編纂するために上記作業を繰り返すことになると思います・・・・結構手間ですね。

4. Amazon Kindle Direct Publishingで出版

本が完成したら、Amazon Kindle Direct Publishingにepubファイルを登録し出版することになります。

出版手順は下記サイトが分かりやすいのでご参照ください。

Amazon Kindleで電子書籍を出版する方法【2021年版】

総評

書籍出版というものは、著名人や頭のいい人たちがするもので自分には関係ないものかと思っていましたが、電子書籍で在庫を抱えずノーリスクで出版できるとなると一気に敷居が下がったように感じます。
しかも印税が7割と通常の書籍出版より断然収益率が高いというメリットもあります。

今回はLaTexで本の内容を書いて、epubに変換して出版するという王道とは外れた方法かと思いますが、LaTex大好きな人達にとっては有益な記事になったのではないかと思います。
(少数派とは思いますが・・・)


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×