JSブロックチェーン
『あなた方のなかで、恐怖心や怒りの気持ちは何がなんでも避けたいと思っていて、これらの感情を本当に恐れている人たちは、恐怖心や怒りの気持ちから何か素晴らしいことを学ぶことが出来る人たちです。 これらの感情は、あなた方をして個人的な存在と行動を規定する境界線を越えさせてくれるテクニックなのに、あなた方はこれを体験することをひたすら恐れています。 たいていの場合、あなた方は受け入れてもらいたいとだけ願っています。 あなた方は、ある種のことをしなければ人は自分のことを好いてくれないだろうとか、ある一定の感じ方をしなければ人に好かれないだろうと感じています。 したがって、あなた方は自分に対してそのような感情をもつことを許しません。 怒りはそこで生まれるのです。』 さて、また地道に javascript に戻りまして。 とりあえずの目的は、イーサで geth というツールを使ったように、javascript でブロックチェーンを作れるようになることですやね。 いきなり答えのようですが、こんな感じになるらしいよ。 ソースコードを”らしく”表示させるためにMarkdown記法で書いており、編集しずらいお。( * )Д`)/アア README.md なんてファイルがあるけど、それがこのMarkdown記法という整形フォーマットなんだね。
const SHA256 = require('crypto-js/sha256'); class Block { constructor(timestamp, lastHash, hash, data){ this.timestamp = timestamp; this.lastHash = lastHash; this.hash = hash; this.data = data; } toString() { return `Block Timestamp : ${this.timestamp} lastHash : ${this.lastHash.substring(0,10)} hash : ${this.hash.substring(0,10)} data : ${this.data} ; ` } static genesis(){ return new this("timestamp", "----", "h4r0-h123",[]); } static mineBlock(lastBlock, data) { const timestamp = Date.now(); const lastHash = lastBlock.hash; const hash = Block.hash(timestamp, lastHash, data); return new Block(timestamp, lastHash, hash, data); } static hash(timestamp, lastHash, data){ return SHA256('${timestamp}${lastHash}${data}').toString(); } static blockHash(block) { const {timestamp, lastHash, data } = block; return Block.hash(timestamp, lastHash, data); } } module.exports = Block;
文法ちょろちょろやってってもいいが、時間が掛かった挙句あまり成果もないまま挫折ってことも。(´ཀ` それは既にあるのだ、というのを見といた方がいい。 それを geth ではコマンド化しとる、ということなんだな。 コマンドの実体というのはプログラムそのものだから、その時も中身が知りたかったわけだ。 てなわけで、ブロックチェーンの本質の勉強になるのは”確実”なんすわ。 トランザクションてのは、誰から誰にいくら(通貨を)送ったデなんてことしかないでしょ。 アカウントのロック解除とかはあるかもだが。 てな、見通しが出てくるわけですよ。 そう考えると、基礎はそんな果てしないことと全然ちゃう。 ただ掴みは大事でね。 それが全てだろうね。 cripto-jsの暗号オブジェクトsha256を呼び出しとるようだ。 これは node.js の外部パッケージになっとるから、dosコンソール上で
npm i crypto-js
でインポートしとかにゃなりませんな。(`・ω・´)ゞ ん? 一瞬死んだかと思いましたが、待ってたら動きましたw なんでも、ユーザディレクトリ配下に app/package.json というファイルがあって確認出来るような。 入ってないじゃないの。(´ཀ` 嵌ったな。(  ̄- ̄) いや、
npm ls
で見ろし、ということで無事入ってました。ε-(´∀`*)
truffle とかも入ってて、これは見覚えありますね。
イーサの環境が欲しくて、ペットショップがどうとかゆってた時のですな。
で、ソースに戻り javascript の変数宣言の種類を見ときますか。
var、let、const ということで、letは再代入可能、constは再代入不可能ですな。
var は再代入さらには再宣言も可能なんだと。
let とかギャグのネタにしてたらすっかり復活しちゃいましたなw
さぁ暗号だ、みたいなね。 だから訳さんでエエ。
クラスの定義がズルズルっとあって、thisとかやっといた方がいいな。 ”これ”って何だと?
曖昧な依頼は受け付けない。(`-д-´)y-~~
なんか、志村けんの"ジス イズ マイ ブラジャー"っつうのが脳内でリフレインしとるんだがw
qiita.com
だそうです。 暇興味のある人は、console.log を使う機会なんで、いろいろテストしてみよう。
俺の依頼主のアレだから、というわけかね?(ω・。) 呼び出し元なんてわかんないからな。
わかった………… やってみよう…………( ・ω・`)y- $\Rightarrow$ 出来るとか言ってない。
あれ? timestampって大文字と小文字で違ってね? 内部変数だからいいんか。
出た!コントラクタ。 オブジェクト指向論争時代はしょっちゅう名前聞きましたけどね。
コントラクトが契約で、ワイはそれを請け負うんやで(;o^)□――□(•̀ω•́ )ゞ ってことかと。
実際は、クラス定義(宣言)の実体化をしとるんだね。
と、実践的な方が理解が深まる気はするが、モノがモノだけにバグは許されんっつうのがね。。
JavaScriptでは、1970年1月1日深夜0時からの”UNIX"経過ミリ秒で日時を管理しとるそうな。
const timestamp = Date.now(); ってところで、文書偽造防止にむっちゃ重要なところ。
www.soumu.go.jp
公文書偽造国家犯罪組織、情弱財務省も麻生を一般ごみに出したことだし、変わらにゃ~ね~w<●>
イーサのクラウドNTP(サーバ)こけたら皆こける。 致命的と言ったのはこういうことである。
blog.cloudflare.com
NTPはネットワーク間の同期プロトコルに過ぎず、時刻の正確性を保証しない。
Windows固有時間経済圏畜乙!ヾ(^0^ゞ
qiita.com
ん? UNIXサーバだってNTP使ってる点では同じだよな?
symphonict.nesic.co.jp
こんな税務署の回し者みたいな部下が中小にいるわけねーだろw 国税庁が長年に渡り日本の経済阻害剤として重要な職責を果たされてきたのですね。(ロ_ロ )サスガデス オフィス賃料や人件費、客に押し付けるんか~い。 まだその程度の認識なわけだね。。 税金制度は無能の証!m9(o_o) manesto.com これは文書改竄性であって通貨と直接関係ないが、通貨そのものとして運用するのが暗号通貨真理教。 明らかに、なにかが激しく間違っていると思われw すべての仮想(暗号)通貨はバブルである。 ただバブルがいつはじけるかは誰にもわからない。 (法定通貨はそうじゃない、とは言い切れない。 牽制の意味でも選択肢はあった方がいい。) チキンレースであるがゆえに”暴落”するのである。 エルサルバドル大丈夫か?w news.yahoo.co.jp 誰が、いつ、なにをどうしたんだ~~~。( * )Д`)/アア 🔑🆔 & ⏱ & 📄 まぁこの技術だけは生き残るでしょう、ということ。$\Rightarrow$ 技術者がとは言ってない。 とにかく今日のところはお腹いっぱいなので、ひとまず終わっときますか~。 6.19のタイムスタンプに向けてな。(ง・ิω・ิ)ง 武尊vs天心やんけ。 暇なのはようわかった。m9(o_o)