//tips
//crypto
Ethereum Name Service(ENS)とは、英数字のみで構成された複雑な暗号資産(仮想通貨)のアドレスを、簡単で分かりやすい文字へと変換できるサービスで、これを使用することにより、長く複雑な暗号通貨のアドレスを使うことなく、簡単な名前でやりとりができるようになるもの。
人間の使用する名前をコンピュータの識別子に変換すること可能にするEthereumブロックチェーン上のスマートコントラクトにより実現される。
主な用途は、今のところ暗号通貨のウォレットに名前を付けることで、チェーンが異なる複数コインの送金でもENS宛に送れるとのこと。
確かに複数送る場合の手間は省けそう。一つだけであれば、コピペで対応できるのでそこまで効果はないかもしれない。
また、暗号資産に触れてこなかった送金者にとって、わかりやすい送金先があることが安心感につながる場合もあるのかもしれない。
ENSの所有者は、Ethereumアカウントの所有者と同一、つまりメタマスクの所有主と同じなので、メタマスクがハッキングされてしまうと乗っ取られてしまうことになる。これはENSには対処しようがないセキュリティ問題となっている。
行政から圧力をかけられて、ウェブサイトを廃止させられてしまうなどの場合、検閲に対して耐性があるため、ENSの方が重宝されるよう。
また、サイバースクワッティングといわれる、希少なデジタル資産としてのドメイン名を、使わないのに利益を得るために保有することに対する対策として、ENS名を所有するには、維持コストがかかる。
下記がその例となる。
・5文字以上の名前の場合、年間更新には5ドル/年
・4文字の名前は年間160ドル
・3文字の名前は年間640ドル
私の場合は商品を販売しているわけではないので特に必要はないかもしれないが、DAOなどの共有財布としてこれを持っておくと便利かもしれないと考えた。
ENS-IPFS連携を利用したDapps周りの改良に期待かも。

//smart contract
早速infuraでnew projectを作成。
今回のテストネットワークはrinkebyを使用することにする。
https://rinkeby.infura.io/v3/プロジェクトID
https://rinkeby.infura.io/v3/8be91991fe134453a334080653ca33d2
このプロジェクトID部分を環境変数に追加。
export INFURA_PROJECT_ID=プロジェクトID
で追加できた。
Truffle-config.jsに下記のコードを追加。rinkebyセッションをネットワークに追加する。
rinkeby:{
provider:()=>{
const mnemonic=process.env["MNEMONIC"]
const project_id=process.env["INFURA_PROJECT_ID"]
return new HDWalletProvaider(
mnemonic,
'https://rinkeby.infura.io/v3/${project_id}'
);
},
network_id:"*"
}
これが完了したらRinkbey faucetにアクセスしてRinkbey アカウントに入金しておく。
そこからは、以前と同様
truffle migrate —network rinkeby
Cd client
Npm run start
すれば良い。
資金調達アプリケーションの作成に移る。fundraiserフォルダの作成。
mkdir fundraiser
cd fundraiser
今回はtruffle init ではなく、truffle boxesの一つを使うことにする。
UIをReactで記載するため、ReactBoxから始めていく。
truffle unbox react
こうするとcontracts,migrations,testディレクトリだけでなく、clientディレクトリもある。
早速、下記のファイルを削除。
rm contracts/SimpleStorage.sol \
migrations/2_deploy_contracts.js \
test/*
新たに2つのファイルを作成。
touch contracts/Fundraiser.sol test/fundraiser_test.js
fundraiser_test.jsのセットアップを始めていく。
//基本情報理解
NAPTとはnetwork address port translationを指し、グローバルIPアドレスとLAN内のコンピュータが使用しているプライベートIPアドレスを変換する技術。IPマスカレードともいう。
チャレンジレスポンス認証方式では、通信途中でパスワードが盗聴されないように、サーバが作成した乱数(チャレンジ)とパスワードから一方向性関数を使って計算したレスポンスを作成してサーバに返信することで認証情報の確認を行う。
無線LAN環境におけるWPA2-PSK(pre shared key)ではアクセスポイントと端末であらかじめ決めた8~63文字のパスワードを共有して通信を行う。