Translate

2016年2月26日金曜日

ブロックチェーンを勉強するためにまず用語集を翻訳してみた

Bluemix上にBlockchainなるサービスがLabに登場した。

IBM、「Bluemix」上で開発者向けブロックチェーンサービスを提供へ
http://japan.zdnet.com/article/35077990/

そろそろ「ブロックチェーン」というものを勉強しなきゃと思ってはいたのだけど、なんとなくのばしのばしにしていた。

でも、そろそろやらんとなあ..と思い、まず

Marblesというブロックチェーンのサンプルコードについている用語集
https://github.com/openblockchain/obc-docs/blob/master/glossary.md

をまず翻訳してみた。

先に行っておくと、ブロックチェーンの"ブ"も知らない超弩級ド素人が翻訳しているので、私のほかの翻訳文書と比較しても品質はとても低い。機械翻訳に近いくらいの出来だ。
なので、参考にするとしても、かなりリスクをともなうことを覚悟してほしい。

----

Roles & Personas

Roles


Chain Transactorトランザクションの生成やネットワークデータ問い合わせのためのパーミッションを保持するエンティティ。
Chain Validatorchain ネットワークのstakeを所有するエンティティ。各chain validatorはトランザクションが有効かどうか決定する投票権を持っており、それゆえchain validatorはそれらのchainへ送られるすべてのトランザクションを調べることができる。
Chain Auditorトランザクションを調べるためのパーミッションを持つエンティティ。

Participants

Solution Userエンドユーザはchainネットワークの詳細について知らない、一般的に彼らはSolution Providerによって有効可能となったアプリケーションを通してchainネットワーク上でトランザクションを開始する。Roles:なし
Solution Providerchainネットワークへアクセスするためのエンド(ソリューション)ユーザのためのモバイルや/もしくはブラウザベースのアプリケーションを開発する組織。アプリケーションオーナはネットワークオーナでもある。Roles: Chain Transactor
Network Proprietor(所有者)Proprietor(所有者)はセットアップし、chainネットワークの目的を決定する。彼らはネットワークのステークホルダである。Roles: Chain Transactor, Chain Validator
Network Auditorsトランザクションを調べるパーミッションを持つ個人もしくは組織。Roles: Chain Auditor

Business Network

Types of Networks


Industry Networkある特定の企業のためにビルドされたソリューションを提供するひとつのchainネットワーク。
Regional Industry Networkある特定の企業や地域のためにビルドされたアプリケーションを提供するひとつのchainネットワーク。
Application Network単一のソリューションだけを提供するひとつのchainネットワーク。


Types of Chains

Main Chainひとつのビジネスネットワーク;各main chainは、組織の同一グループによって認可された1つ以上のアプリケーション/ソリューションを運用する。
Confidential Chain契約投資家(contract stakeholders)によってのみアクセス可能な秘密のビジネスロジックを実行するために生成された特別な目的のchain。


Transactions

Types of Transactions

Deployment Transactionあるchainへ新しいchaincodeをデプロイするトランザクション。
Invocation Transactionあるchaincode上の一つの機能を発動するトランザクション。

Confidentiality of Transactions

Public transaction公となっているそのペイロードを持つトランザクション。chainネットワークへアクセス可能な誰もがpublic transactionの詳細を調べることができる。
Confidential transaction暗号化されたペイロードを持つトランザクション。もしトランザクションがdeployment transactionであれば、以降デプロイされたchaincodeを読んでいるすべてのinvocation transactionもまた秘密であるべきである。

Inter-chain Transactions

Inter-Network Transaction2つのビジネスネットワーク(main chains)間のトランザクション。
Inter-Chain Transactionconfidential chainやmain chainの間のトランザクション。confidential chainのchaincodeは一つ以上のmain chain上のトランザクションを起動する事ができる。

Network Entities

Systems

Application Backend

目的:
関連のモバイルや/もしくはブラウザベースアプリケーションをサポートするバックエンドアプリケーションサービス。

鍵となるロール:
  • エンドユーザの管理やメンバーシップサービスによるそれらの登録
  • トランザクション要求の開始、そしてノードへのリクエスト送信
所有元:
Solution Provider, Network Proprietor

Non Validating Node (Peer)

 目的:
トランザクションを構築し妥当なノードへフォワードする。ピアノードはすべてのトランザクションレコードのコピーを維持するのでsolution providerはそれらを内部で問い合わせることが可能である。(開発用語名:NVP - Non Validating Peer)

鍵となるロール:
  • メンバシップサービスによるユーザの秘密事項の管理と維持
  • トランザクションの構築と妥当なノードへのフォワード
  • 台帳のローカルコピーの維持、そして内部で情報を問い合わせるためのアプリケーションオーナへの許可
所有元:
Solution Provider, Network Auditor

Validating Node (Peer)

 目的:
トランザクションの構築と妥当性検証、そしてchaincodeのstate維持。
鍵となるロール:
  • メンバシップサービスによるユーザ秘密事項の管理と維持。
  • トランザクションの構築
  • ネットワーク上のほかの妥当性検証ノードでのトランザクションの実行と妥当性検証
  • 台帳のローカルコピーの維持
  • 合意による参加と台帳の更新
所有元:
Network Proprietor, Solution Provider (同一のエンティティに所属する場合)

Membership Service

目的:
エンドユーザや組織の識別の振り出しや管理

鍵となるロール:
  • 各エンドユーザや組織への登録証明書の発行
  • 関連する各エンドユーザや組織へのトランザクション証明書の発行
  • OBCエンティティ間のセキュア通信のためのTLS証明書の発行
  • chain 特定キーの発行
所有元:
Third party service provider

Membership Service Components


Registration Authority登録username、登録passwordのペアにネットワーク参加を割り当てる。username/passwordペアはECAから登録証明を取得することで利用される。
Enrollment Certificate Authority (ECA)メンバシップサービスにより既に登録されたネットワーク参加者に登録証明書(ECert)を発行する。ECertは一つ以上のネットワークに参加している個別のエンティティを特定するために使用される長期証明書である。
Transaction Certificate Authority (TCA)Ecert 所有者へトランザクション証明書(TCert)を発行する。それぞれのECertから無限数のTCertを抽出することが可能である。TCertはネット ワーク参加者によりトランザクションを送るために使用される。セキュリティ要求のレベルに依存して、ネットワーク参加者はそれぞれのトランザクションごと に新しいTCertを使うことを選択してもよい。
TLS-Certificate Authority (TLS-CA)あるchainネットワークのメッセージを渡すシステムへのTLS証明書の発行。TLS証明書はシステム間のセキュアな通信チャネルによって使用される。

OBC Entities

Chaincode

Public Chaincodepublic transactionによりデプロイされたchaincode。これらのchaincodeはネットワークのどんなメンバによっても割り当て可能である。
Confidential ChaincodeConfidential transactionによりデプロイされるchaincode。これらのchaincodeはネットワークの妥当性検証メンバ(chain validator)によって割り当て可能である。
Access Controlled Chaincode承 認されたinvokerのトークンも埋め込まれたConfidential transactionによりデプロイされるchaincode。これらのinvokerもまた、たとえValidatorでなくても、 confidential chaincode割り当て許可されている。

Ledger(台帳)

Chaincode-StateOBCはstateサポートを提供する;chaincodeはstate APIを通して内部のstateストレージへアクセスする。stateは、ロジックへアクセスするstateのchaincode機能を呼び出すトランザクションによって生成、更新される。
Transaction Listす べての処理されたトランザクションは台帳内にオリジナルフォーム(confidential transactionのために暗号化されたペーロード)で保管される、このためネットワーク参加者はアクセスパーミッションを使って過去のトランザク ションを調べることができる。
Ledger Hash台帳の現在のスナップショットをカプチャするハッシュ。トランザクションが生成されてからのネットワークにより処理されたすべてのvalidated transactionの結果である。

Node

DevOps Serviceク ライアントとそれらのノードやchainネットワークとのやりとりをAPIとして提供するノード上の正面のモジュール。このモジュールもまたトランザク ションの構築に責任を持ち、メンバーシップサービスとともに動作してすべてのタイプの証明書や暗号キーを受け取りストレージに格納する。
Node Serviceトランザクション処理に責任をもつノード上のメインモジュール。chaincodeをデプロイおよび実行、台帳データの維持、そして合意プロセスを起動する。
ConsensusSieveとよばれるOBCのデフォルト合意アルゴリズム。妥当性検証ノードにできるかぎり非決定論トランザクションを確認することを許可する「古典的な」PBFTメカニズムを拡張した、新しいアルゴリズムである。

----

と、最後まで翻訳したので、最初から読んでみるか..


2016年2月17日水曜日

FreeIPAでログインしたJenkins/Subversionで突然E200015: authentication cancelledというメッセージが出て失敗する

FreeIPAのLDAP連携でユーザ管理しているJenkinsサーバで毎晩必ず成功するジョブを仕掛けたままにしていたら、ある日次のようなログが出てエラーになってしまった..


ビルドします。 ワークスペース: /var/lib/jenkins/workspace/hogehoge_buildname
Updating http://subversion.server.local/svn/repo/default/tags/it_target at revision '2016-02-17T09:32:57.319 +0900'
org.tmatesoft.svn.core.SVNCancelException: svn: E200015: authentication cancelled
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)

調べてみるとSubversionサーバ(subversion.server.local)のdefaultリポジトリへのアクセスで認証がキャンセルされているというエラーらしい..

で、調べてみたらFreeIPAをデフォルトインストールした時のパスワードポリシ"global_policy"が定義されていて、Max lifesycleが90日になっていた。

なのでJenkins上に定義していたCridentialsのアカウントパスワードを設定しなおしたら動作した..


FreeIPAをそのまま使っている場合はパスワードポリシに気をつけましょう..


と、いってもこんな初歩的な罠にゃ誰もひっかからんか..





2016年2月3日水曜日

メールによるRedmineチケットの登録をためしたら、ログにPermission deniedと表示され動かない

メールによるRedmineチケットの登録で

SELINUXenforcingであるCentOS7.2上にRedmine3.2.0とpostfix(MX)をインストールしているので、

メールによるチケットの登録
http://redmine.jp/guide/RedmineReceivingEmails/

をためしてみた。

しかし、上記リンクの「メールサーバからメールを転送」に従って設定して実行してみたら、/var/log/maillogに以下のエラー行がでて登録されない..

Feb  00 00:00:00 mail local[000000]: fatal: execvp /path/to/redmine/extra/mail_handler/rdm-mailhandler.rb: Permission denied


/etc/aliasesのパイプで/path/to/redmine/extra/mail_handler/rdm-mailhandler.rbを実行するように書いたのだけど、ファイルの実行権限やユーザ、グループ設定は大丈夫なので、SELINUXがあやしいとおもいためしに

semanage permissive -a postfix_local_t

を実行してpostfix_local_tがらみだけSELINUXPermissiveauditログにはエラーはでるが実行は許可する)にしてみたら動作した..

でも、これだとセキュリティ的に負けた気がする..

で、Permissiveを元に戻して

chcon -R -t postfix_local_exec_t /path/to/redmine/extra/mail_handler/rdm-mailhandler.rb

したのだけど、/var/log/audit/audit.log

type=AVC msg=audit(1454457948.826:11466): avc:  denied  { search } for  pid=10388 comm="local" name="redmine" dev="dm-1" ino=103065422 scontext=system_u:system_r:postfix_local_t:s0 tcontext=unconfined_u:object_r:httpd_sys_rw_content_t:s0 tclass=dir

と出てしまう..
どうもredmine/var/www/html以下ではないパスにインストールしたかったので、/path/to/redmine(パスのredmineのところだけauditログに出ている)に対して

chcon -R -t http_sys_rw_content_t /path/to/redmine

してしまっていたのが災いして、ファイルまで到達できなかったらしい..

どうもchconをイロイロ試してみたが、http系とpostfix_local_t系の二つのSELINUXドメインを共存させることはできないらしい..

とはいえ Redmine を動かすには http_sys_rw_context_t は外すことはできない..

しょうがないので、rdm-mailhandler.rb/another/path/rdm-mailhandler.rbに移動させて

chcon -R -t postfix_local_exec_t /another/to/redmine/extra/mail_handler/rdm-mailhandler.rb

して動かしたらやっと動作した..


そういや日本語の記事であまり有効な情報がなかったなあ..
SELINUXを有効にした状態で、みんな運用していないのかねえ..

TensorFlow Serving 1.0 リリースのブログ記事を翻訳してみた

今朝、Twitterをみると、こんな記事がながれてきた。 With #TensorFlow Serving 1.0 you can apt-get install tensorflow-model-server Learn more here: https://...