20201119 Balancerのコントラクトを読む
github
https://github.com/balancer-labs/balancer-core
Defi投信、ファンドマネージャに手数料を払うのではなく、トレーダーから手数料を得ることができるので管理手数料がかからない。
セキュリティツールとして manticore , Echidnaを利用
https://ethereum.org/en/developers/tutorials/guide-to-smart-contract-security-tools/
Echidna
ランダムでトランザクションを発行し、プロパティに違反するシーケンスを検出する。
設定(テスト用データ生成の設定?)をyamlに記述
Manticore (Pythonで動作する)
https://ethereum.org/en/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/
数式の検証技術、Dynamic symbolic execution
code:python
if(a == 65) {
// 何らかのコード
}
といったコードが存在する場合に a== 65と a != 65といった具合にプログラムが通りうるパス(program path)を推定して、a = 1といった値を代入してテストしてくれる。
code: python
function unsafe_add(uint a, uint b) returns(uint c){
c = a + b; // no overflow protection
return c;
}
というコードの場合はオーバーフローが考慮されておらず、例えば a = 10 , b = MAXUINT256 などとおいた場合に c < a + bとなる可能性がある。こういったコードの脆弱性を検知してくれるようだ。
(次回)AMMとしての主な特徴は以下、これらがどこに書いてるのか知りたい。
プールの流動性計算の仕組みはhttps://github.com/balancer-labs/balancer-core/blob/master/contracts/BMath.sol のようだが、数学の仕組みが難解…
portfolio manager
liquidity provider
price sensor