Open
Description
Oneline description
アシストクレジットからロールシェア、サンクストークンのデュアルトークンの仕組みに移行。
経緯は #336 の議論を参照
Description
ロールシェア
現状のアシストクレジットとほとんど実装は同じERC1155ベース。概念としては株式により近くする。
変更点
- 上限発行数を ロール x ユーザー の組み合わせで100万枚までに変更
- 追加発行をロール保持者のみができるように
- Transferはシェア保持者のみができるように(ロール保持者は一度渡してしまうと、返してもらうには保持者に頼むしかない)
サンクストークン
新たに追加するワークスペースごとに一つづつコントラクトが存在し、他と同じようにBigBangで一緒にデプロイされる。
トークン規格はERC20でDecimalは18。
重要な機能
- mint write関数: ロール(Hat)保持者・ロールシェア保持者がメンバーにわたすときに使う。自分にはmintできない。
- mintableAmount view関数: 当人がmint関数で渡すことのできる上限値(以下に記す条件で時間とともに上がる)
- transfer write関数: 通常のERC20とおなじ。
- mintedAmount view関数: 当人が過去にmintした量(報酬分配ロジックなどにも使う)
- すでに配っている量をどのように保持するか検討(addressをキーにmappingで保持が王道かな)
mintableTotalAmount
引数として、owner
relatedRole (hatId, wearerIdのstruct配列)
を取る。
Amountの計算につかう変数は
- roleの従事期間にシェア保有率をかけた数値
- 人からもらったサンクストークンの量の1割
- アドレス固有の係数を設定できるように(なにもない場合は初期値として1)Factoryコントラクトからデプロイするときに設定でimmutable。
mint
mintableTotalAmount - mintedAmount の量を上限に自分以外にmintできる。
サンクストークンのFactoryコントラクト
長期的なフェアネスを入れるために、mintableTotalAmountにユーザーごとに係数をつけられるようにする。
例えばメンバーA/Bが相互に送りまくった場合、リセットタイミングで係数を0.1にして影響を下げることができる。
最後の会話を参照 => https://chatgpt.com/share/6827f278-103c-8004-86aa-696f39106cab