//tips
//基本情報理解
MTBF(Mean Time Between Failures)とは、平均故障間隔のことで、システムに障害が発生してから次に故障が発生するまでの平均時間のことを指す。
一方で、MTTR(Mean Time Between Repair)は、平均修理時間のことで、システムに故障が発生してから、修理が完了して復旧するまでの平均時間のこと。
断片化した未使用領域を詰めて大きな未使用領域を作成することをメモリコンパクションという。開放して利用するガーベジコレクションとは異なる。
//pitch deck
Adpushup はA/B testを通して広告収入を最大化するサポートを行う企業で $632,000以上の出資を受けている。
広告非表示機能という問題とそれに対する解決策となる商品、そしてなぜ今それを実行する必要があるのかを説明しており、商品の右肩上がりのトランザクション推移なども提示しており、シンプルにインパクトがある形でまとまっており、参考になる。
https://www.pitchdeckhunt.com/pitch-decks/adpushup
//smart contract
コントラクトをデプロイできるかのテスト。greeter_test.jsのスクリプトとして下記を記載。
const GreeterContract=artifacts.require("Greeter");
contract("Greeter",()=>{
it("has been deployed successfully",async()=>{
const greeter=await GreeterContract.deployed();
assert(greeter,"contract was not deployed");
});
});
Truffleではartifacts.require関数を使うことで、コンパイル済みのコントラクトを読みこんで操作できるよう。
Contract関数は組み込みのdescribeのように動作し、これを使うことでtruffleのクリーンルーム機能の恩恵も受けることができるとのこと。
クリーン機能は新たなコントラクトがデプロイされ、その中でテストが実行されるので、異なるテストグループ間で情報が共有されるのを防ぐことができる。
ブロックチェーンとのやりとりは全て非同期で行われるため、async/await構文を使用されている。
greeterがtrueならテストは成功となる。
truffle testをターミナルに打ち込んでみるも動作せず。truffle test test/greeter_test.jsとするも効果なし。
エラーの記載がターミナルに現れるはずだがそれもなく。しょうがなくGreeter.solを作成して再度観察。
pragma solidity >= 0.4.0 < 0.7.0;
contract Greeter{
}
まだダメ。さらにtouch migrations/2_deploy_greeter.jsも追加。
const GreeterContract=artifacts.require("Greeter");
module.exports=function(deployer){
deployer.deploy(GreeterContract);
}
きちんとtruffleが入っているのか確認したら一式入っているよう。
truffle version
Truffle v5.1.31 (core: 5.1.31)
Solidity v0.5.16 (solc-js)
Node v16.2.0
Web3.js v1.2.1
まずはhello worldを言わせる作戦に変更。
truffle create contract HelloWorld
これでHelloWorld.solをcontractsディレクトリ内に作成。
pragma solidity >=0.4.25 <0.6.0;
contract HelloWorld {
string word;
constructor(string memory _word) public {
word = _word;
}
function getWord() public view returns(string memory) {
return word;
}
function changeWord(string memory _word) public {
word = _word;
}
}
deploy_contracts.jsを書き換え。
const HelloWorld = artifacts.require("HelloWorld");
module.exports = (deployer) => {
const word = "Hello";
deployer.deploy(HelloWorld, word);
};
npm install -g ganache-cli
ganache-cli
truffle console
truffle(development)> let instance = await HelloWorld.deployed()
Uncaught:
Error: HelloWorld has not been deployed to detected network (network/artifact mismatch)
下記を参考に色々チャレンジ。
参考:
なんとかhelloを出せた。migrationフォルダの中のファイルの数字を消してはいけないことや順番に数字を付与していくなどのルールがわかってやっと辿り着いた。
truffle console
truffle(development)> let instance = await HelloWorld.deployed()
undefined
truffle(development)> instance.getWord()
'Hello'
いやあ、これはバージョンが変わるにつれてかなりの変化を遂げている可能性がある。厄介なことになってる。今はtruffle testは使えないのかなあ。
要因を色々調べていくとtruffle-config.js ファイルの networks設定を行わないとエラー表示も行われず先に進めない現象になることがわかった。逆にこれさえ設定しておけばtruffle testのコマンドは使える。
truffle-config.jsの下記の設定が変わったのだろうか。
development: {
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
},
Using network 'development’.を使用することが正解なのか?
一旦このまま進めてみる。なぜそのコマンドを叩くとその結果となるのかの部分と純粋にjsの知識を強化せねば。少しずつ攻略する。