アルゴリズム&IPFS
Notionに色々まとめました。
IPFSとは
コンテンツ指向型プロトコル
ファイルやドキュメント、フォルダをハッシュ化してブロックチェーン上に載せていく(?)
今回のアプリではレポート(ファイル)をハッシュ化してIPFSに保存する→そのハッシュ値をEthereum上に書き込み
アプリでのイメージ
A...ファイルのアップロードをするユーザー
B...ファイルをトークンで買うユーザー
1.Aがファイルをアップロード(PDFで統一されたものとする。他の拡張子でも可)
2.アップロードされたファイルをハッシュ化してIPFSネットワークに投げる
3.ハッシュ値をEthereumに書き込み?+データベースに保存?
4.Bがトークンを支払ったら登録されたハッシュ値からIPFSネットワークにファイルを探しに行く
5.デフォルトゲートウェイでのリンクを載せる?
https://gyazo.com/5835a6469ddae409d6fcc76a2be2d997
ファイルをダウンロードするんじゃなくて...って感じになるんですかね?ブラウザだけで完結できたらそれはそれでいいのかなって感じです。
↑ここのAPIを使うとうまく行けそうです!!!!!
ipfs addやipfs catコマンドをjsで記述ができる?ぽいです
アルゴリズム
・レポートの情報を格納する(削除済み)
truffle(ganache)> Algorithm.address
https://gyazo.com/680420b55c0c8bf1e2b014135b1d8950
Algorithm.deployed().then(instance =>{instance.reportsPush("0xc9472850C2bbEBC689b581b92A2E1A694235c9e5", "R1", 900).then(console.log) })
Algorithm.deployed().then(instance =>{instance.reportsPush("0x45c79bbE964d68beC3c8BeCAB9d3A7b7f7e9dDcd", "R2", 800).then(console.log) })
Algorithm.deployed().then(instance =>{instance.reportsPush("0xA4682e519519f3D461DEEa60ed8f2A07d7ed7458", "R3", 700).then(console.log) })
関数実行
・RP1
Algorithm.deployed().then(instance =>{instance.HPF().then(console.log) })
Algorithm.deployed().then(instance =>{instance.reportsSort().then(console.log) })(削除済み)
※HPFにソートを入れ込んで使うように変更しました。降順にソートできてるかの確認ということで、、、
https://gyazo.com/bd9718a8b7602e4cc8b72190fc1d8cbe
上のソートだけを実行して、構造体を返す関数reportsSort()は無くして、HPF関数内でbubbleSort(Report[] memory items)をそのまま使います
・RP2
Algorithm.deployed().then(instance =>{instance.random().then(console.log) })
https://gyazo.com/2fb1a52bea3dda54cf255f31a516d347