//tips
//基本情報理解
SEOポイズニングとは、googleなどの検索上位にマルウェアなどを含んだ悪意のあるwebサイトを載せるというもの。
IDS intrusion detection systemではネットワークを流れるパケットから侵入のパターンに合致するものを検出して、管理者への通知や検出した内容の記録を行う。
公開鍵暗号方式は、送信者が秘密鍵で暗号化したデジタル署名(元は文書のハッシュ)と文書データなどを送り、受信者が送信者Aの公開鍵でデジタル署名を復号し、それを文書データから計算できるハッシュと比較することで安全性を確認するもの。
クリプトジャッキングとは暗号通貨を採掘するために他人のコンピュータを不正に使用すること。
//pitch deck
Revolutは銀行機能をスマホで実行可能にするサービスで旧来の窓口での交換や送金依頼などをアプリ一つで解決できるようにするというサービスで、15枚のスライドながら問題点と解決策がきちんと提示され、visual的に非常に見やすい。競合と自社比較や自社の強みなども書かれており、参考にしたいpitchの一つ。
//smartcontract
今度はコントラクトの上書き方法を確認していく。
pragma solidity 0.8.4;
contract A{
string public msgA="hello world";
//上書きされる方はvirtualを追加
function print()public virtual view returns (string memory)
{
return msgA;
}
}
contract B is A{
//コントラクトの上書きをするにはコントラク同士を繋げる必要がある
//isで対応。Aが親でBが子
string public msgB="hi";
//上書きには同じ内容のfunction文を書く必要がある
//上書きする方はoverrideを記載
//print()を実行するとAではなくBのが優先され、Aは表示されない。見えなくなる
function print()public override view returns (string memory)
{
return msgB;
}
}
さらに複数の親を持つ例も考えていく。
pragma solidity 0.8.4;
contract A{
string public msgA="hello world";
constructor(string memory _msg){
msgA=_msg;
}
//上書きされる方はvirtualを追加
function print()public virtual view returns (string memory)
{
return msgA;
}
}
contract B {
//コントラクトの上書きをするにはコントラク同士を繋げる必要がある
//isで対応。Aが親でBが子
string public msgB="hi";
constructor(string memory _msg){
msgB=_msg;
}
//上書きには同じ内容のfunction文を書く必要がある
//上書きする方はoverrideを記載
//print()を実行するとAではなくBのが優先され、Aは表示されない。見えなくなる
function print()public virtual view returns (string memory)
{
return msgB;
}
}
contract C is A,B{
//この場合はA,B二つ呼ばれるのでどちらかを指定する必要がどちらかを指定する必要がある
//コンストラクターも継承することが可能
//これによりmsgAとmsgBの内容を引数とbに変更することができる
constructor(string memory _msg) A(_msg) B("b"){
}
function print() public override (A,B) view returns (string memory){
//A.print()のように指定する
return A.print();
//super.print()とするとisの右端を呼ぶ。なのでBを呼ぶことになる
}
//親の関数にアクセスすることもできる
//privateの場合はアクセスできない
function changemsgB(string memory _msg)public{
//コントラクトBのmsgBを変更
msgB=_msg;
}
}