Skip to content

ロールシェア、サンクストークンの実装(スマコン) #365

Open
@yu23ki14

Description

@yu23ki14

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions