//tips
//smart contract
まだ問題になっていた箇所の特定ができていないので、確認を行う。
下記のエラーが出ていた前後を確認し、await factory.methods.getDeployedCampaigns.call();
からawait factory.methods.getDeployedCampaigns().call();に修正。
Server Error
TypeError: this.props.campaigns.map is not a function
static async getInitialProps(){
const campaigns=await factory.methods.getDeployedCampaigns.call();
//factoryインスタンスからgetDeployedCampaignsを呼び出し
return {campaigns};
//これによりrenderでpropsへのアクセスができるようになった
}
static async getInitialProps() {
const campaigns = await factory.methods.getDeployedCampaigns().call();
return { campaigns };
}
するとエラーの形式が変更される。
Server Error
Error: Invalid JSON RPC response: "invalid project id\n"
これはinfuraの問題かもしれないので再度成功した方のフォルダでnpm run devを実行。
きちんと表示ができた。
kickstartfinal % npm run dev
> kickstart@1.0.0 dev
> node server.js
info - Using webpack 5. Reason: no next.config.js https://nextjs.org/docs/messages/webpack5
再度失敗したフォルダのnpm run devの方を見てみると
npm run dev
> kickstart@1.0.0 dev
> node server.js
となっており、infoの部分の補完がされ、next.jsが機能している前者に比べ、最新バージョンを入れてしまった後者がうまく適応できていないのかもしれない。
npm install -save --legacy-peer-deps next react react-dom
を後付けで入れてみたらどうなるかを確認。
error - Error: Invalid JSON RPC response: "invalid project id\n”が表示され、効果がないよう。
Package.jsonのバージョン情報も変更、routes.js、server.jsも更新し再度トライ。
npm run dev
> kickstart@1.0.0 dev
> node server.js
info - Using webpack 5. Reason: no next.config.js https://nextjs.org/docs/messages/webpack5
と成功時と同様の表示がなされたがError: Invalid JSON RPC response: "invalid project id\n”のエラーは継続。
再度compileからやってみる。
npm install ganache-cli mocha solc@0.4.17 fs-extra web3
npm install @truffle/hdwallet-provider
cd ethereum
node compile.js
node deploy.js
Deployはうまくできたので、ここまでは問題ないよう。
これでもまだError: Invalid JSON RPC response: "invalid project id\n”は表示される。
npm list --depth=0
を実行して、内容を確認。
├── @truffle/hdwallet-provider@1.7.0
├── fs-extra@10.0.0
├── ganache-cli@6.12.2
├── mocha@9.1.3
├── next-routes@1.4.2
├── next@10.2.3
├── react-dom@17.0.2
├── react@17.0.2
├── semantic-ui-css@2.4.1
├── semantic-ui-react@2.0.4
├── solc@0.4.17
└── web3@1.6.1
(成功確認済み)
├── @truffle/hdwallet-provider@1.7.0
├── fs-extra@10.0.0
├── ganache-cli@6.12.2
├── mocha@9.1.3
├── next-routes@1.4.2
├── next@10.2.3
├── react-dom@17.0.2
├── react@17.0.2
├── semantic-ui-css@2.4.1
├── semantic-ui-react@2.0.4
├── solc@0.4.17
└── web3@1.6.1
漏れもないよう。
成功したもののフォルダ内容をそのまま反映させたらきちんとページの表示までたどり着くことができた。
Ethereumのフォルダを成功版に入れ替えることでエラーが消えるので現在のEthereumのフォルダの内容の誤りを見つける。
フォルダを新旧入れ替えて検証していくと問題がweb3.jsで発生していたことがわかった。
const provider = new Web3.providers.HttpProvider(
"https://rinkeby.infura.io/v3/15c1d32581894b88a92d8d9e519e476c'"
);
の部分で’”と不要な’が入っていたことが要因だった。
Nextjs部分かと思ったらweb3の接続部分だったか、確かにhtml部分がエラー箇所に含まれていたのでhttpprovider箇所を疑うべきだったかもしれない。
確認事項があったので、コードの記述のみを進め、最後に一気に開発内容の確認する形になってしまったが、本来はスクリプトを少しづつテストしていく形で進めていかないといけないので、運用に問題があったと反省。
ここからは、dexデモ版を再度作成してみること、もう少しcrowdcoinを改良してgithubにあげること、polygon,plasmネットワークでのDapps公開を行ってみることなどを進めていく。
調べる必要があるのはチェーン構築技術とChainlink,セキュリティ技術関連のIron Fishなど。
Iron Fish is a decentralized, proof-of-work (PoW) based, censorship-resistant, and publicly accessible blockchain project. It is designed to support strong privacy guarantees on every transaction.

特にchainlinkのホワイトペーパーは読まねば。
chainlinkの問題点は結局 3rd partyから取り込む情報は信頼性が担保できないにつきそう。
a 3rd party relying on data from a 3rd party = failure. If you have worked with OpenData data sets from other organisations - you know what I am talking about. Things like ILP+ETH+XRP and a data source API make more sense than CHAINLINK.
ILP(Interledger Protocol:インターレジャープロトコル)は、米リップル社が2015年に提唱した、世界中の異なる台帳やネットワークをまたがる取引における決済方法の国際標準規格化プロジェクトのこと。
nothing has been secure enough for them to risk it. Until now.
同時にオラクルの制御を通じてコントラクトに影響を与えるために、過剰な力を得ることになるのも問題。
下記参考文献。
https://medium.com/chainlink-community/what-is-the-blockchain-oracle-problem-bc7bdb6425c6
What is Blockchain Oracle Problem and how Chainlink solves it?
Chainlinkでもアプリ出してみると何か掴めるか。