Skip to content

Commit

Permalink
Daospace support plugin marketplace (#116)
Browse files Browse the repository at this point in the history
* feat: add dao extpoint

* feat: add DAOExtensionPoint and test

* feat: update DAOExt

* feat: add test for extpoint registry

* feat: test extpoint register and publish version

* feat: update dao_extension_point

* feat: update dao_plugin_marketplace

* feat: add test case for plugin marketplace

* feat: update dao extension

* feat: support star plugin

* feat: test star

* feat: support unstar plugin

* feat: add labels for plugin

* feat: add update method for plugin

* feat: add plugin events

* feat: support labels for ExtPoint

* feat: star and unstar extpoint

* feat: test extension point owner NFT transfer

* feat: add events for operation

* feat: registry init for StdlibUpgradeScripts

* feat: integration Plugin Placemarket to DAOSpace

* feat: config do_upgrade_from_v12_to_v12_1 for inner plugins

* feat: fix integration-tests fail

* feat: remove DAOPluginMarketplace and DAOExtensionPoint script

* feat: format code

* feat: remove Star user

* feat: limit version count max 100

* feat: fix int test fail

* feat: fix all check about MoveAbort

* feat: limit plugin version max 5

* feat: limit Max version count for extension point as 99

* feat: remove plugin version from InstalledPluginInfo

* feat: limit update plugin and publish plugin version in PluginT module

* feat: add version tag repeat check

* feat: mark MoveAbort for repeat tag

* feat: remove unused check for plugin init

* feat: change created_at and updated_at from now_milliseconds to now_seconds

* feat: limit input string length

* feat: update NFT image with IPFS address

* feat: remove SalaryGovPlugin from daospaceplugin
  • Loading branch information
yubing744 committed Sep 18, 2022
1 parent dee9a0b commit 6cccb73
Show file tree
Hide file tree
Showing 67 changed files with 3,912 additions and 134 deletions.
8 changes: 7 additions & 1 deletion build/StarcoinFramework/BuildInfo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: DAOAccount
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: DAOExtensionPoint
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: DAOPluginMarketplace
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: DAORegistry
: StarcoinFramework
Expand Down Expand Up @@ -312,7 +318,7 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: YieldFarmingV2
: StarcoinFramework
source_digest: DC60876727975D2C568C06813162A81120B13D4F6A6B636E13364139A16514B3
source_digest: E084083B9449F396039B8495E0E69BE4F2537E6F6E63F8187394FFDA78F1A9B2
build_flags:
dev_mode: false
test_mode: false
Expand Down
Binary file modified build/StarcoinFramework/bytecode_modules/GenesisSignerCapability.mv
Binary file not shown.
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/MemberProposalPlugin.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/StdlibUpgradeScripts.mv
Binary file not shown.
53 changes: 52 additions & 1 deletion build/StarcoinFramework/docs/InstallPluginProposalPlugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@

- [Struct `InstallPluginProposalPlugin`](#0x1_InstallPluginProposalPlugin_InstallPluginProposalPlugin)
- [Struct `InstallPluginAction`](#0x1_InstallPluginProposalPlugin_InstallPluginAction)
- [Function `initialize`](#0x1_InstallPluginProposalPlugin_initialize)
- [Function `required_caps`](#0x1_InstallPluginProposalPlugin_required_caps)
- [Function `create_proposal`](#0x1_InstallPluginProposalPlugin_create_proposal)
- [Function `execute_proposal`](#0x1_InstallPluginProposalPlugin_execute_proposal)
- [Function `execute_proposal_entry`](#0x1_InstallPluginProposalPlugin_execute_proposal_entry)


<pre><code><b>use</b> <a href="DAOSpace.md#0x1_DAOSpace">0x1::DAOSpace</a>;
<pre><code><b>use</b> <a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace">0x1::DAOPluginMarketplace</a>;
<b>use</b> <a href="DAOSpace.md#0x1_DAOSpace">0x1::DAOSpace</a>;
<b>use</b> <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability">0x1::GenesisSignerCapability</a>;
<b>use</b> <a href="Option.md#0x1_Option">0x1::Option</a>;
<b>use</b> <a href="Vector.md#0x1_Vector">0x1::Vector</a>;
</code></pre>

Expand Down Expand Up @@ -71,6 +75,50 @@
</dl>


</details>

<a name="0x1_InstallPluginProposalPlugin_initialize"></a>

## Function `initialize`



<pre><code><b>public</b> <b>fun</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_initialize">initialize</a>()
</code></pre>



<details>
<summary>Implementation</summary>


<pre><code><b>public</b> <b>fun</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_initialize">initialize</a>() {
<b>let</b> signer = <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability_get_genesis_signer">GenesisSignerCapability::get_genesis_signer</a>();

<a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace_register_plugin">DAOPluginMarketplace::register_plugin</a>&lt;<a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>&gt;(
&signer,
b"<a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">0x1::InstallPluginProposalPlugin</a>",
b"The plugin for install plugin proposal",
<a href="Option.md#0x1_Option_none">Option::none</a>(),
);

<b>let</b> implement_extpoints = <a href="Vector.md#0x1_Vector_empty">Vector::empty</a>&lt;vector&lt;u8&gt;&gt;();
<b>let</b> depend_extpoints = <a href="Vector.md#0x1_Vector_empty">Vector::empty</a>&lt;vector&lt;u8&gt;&gt;();

<b>let</b> witness = <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>{};
<a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace_publish_plugin_version">DAOPluginMarketplace::publish_plugin_version</a>&lt;<a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>&gt;(
&signer,
&witness,
b"v0.1.0",
*&implement_extpoints,
*&depend_extpoints,
b"inner-plugin://install-plugin-proposal-plugin",
);
}
</code></pre>



</details>

<a name="0x1_InstallPluginProposalPlugin_required_caps"></a>
Expand Down Expand Up @@ -121,6 +169,7 @@
<b>let</b> action = <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_InstallPluginAction">InstallPluginAction</a>&lt;ToInstallPluginT&gt;{
required_caps,
};

<a href="DAOSpace.md#0x1_DAOSpace_create_proposal">DAOSpace::create_proposal</a>(&cap, sender, action, description, action_delay);
}
</code></pre>
Expand All @@ -146,8 +195,10 @@

<pre><code><b>public</b> <b>fun</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_execute_proposal">execute_proposal</a>&lt;DAOT: store, ToInstallPluginT: store&gt;(sender: &signer, proposal_id: u64){
<b>let</b> witness = <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>{};

<b>let</b> proposal_cap = <a href="DAOSpace.md#0x1_DAOSpace_acquire_proposal_cap">DAOSpace::acquire_proposal_cap</a>&lt;DAOT, <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>&gt;(&witness);
<b>let</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_InstallPluginAction">InstallPluginAction</a>{required_caps} = <a href="DAOSpace.md#0x1_DAOSpace_execute_proposal">DAOSpace::execute_proposal</a>&lt;DAOT, <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>, <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_InstallPluginAction">InstallPluginAction</a>&lt;ToInstallPluginT&gt;&gt;(&proposal_cap, sender, proposal_id);

<b>let</b> install_plugin_cap = <a href="DAOSpace.md#0x1_DAOSpace_acquire_install_plugin_cap">DAOSpace::acquire_install_plugin_cap</a>&lt;DAOT, <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>&gt;(&witness);
<a href="DAOSpace.md#0x1_DAOSpace_install_plugin">DAOSpace::install_plugin</a>&lt;DAOT, <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">InstallPluginProposalPlugin</a>, ToInstallPluginT&gt;(&install_plugin_cap, required_caps);
}
Expand Down
49 changes: 48 additions & 1 deletion build/StarcoinFramework/docs/MemberProposalPlugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

- [Struct `MemberProposalPlugin`](#0x1_MemberProposalPlugin_MemberProposalPlugin)
- [Struct `MemberJoinAction`](#0x1_MemberProposalPlugin_MemberJoinAction)
- [Function `initialize`](#0x1_MemberProposalPlugin_initialize)
- [Function `required_caps`](#0x1_MemberProposalPlugin_required_caps)
- [Function `create_proposal`](#0x1_MemberProposalPlugin_create_proposal)
- [Function `create_proposal_entry`](#0x1_MemberProposalPlugin_create_proposal_entry)
Expand All @@ -16,7 +17,9 @@
- [Function `install_plugin_proposal_entry`](#0x1_MemberProposalPlugin_install_plugin_proposal_entry)


<pre><code><b>use</b> <a href="DAOSpace.md#0x1_DAOSpace">0x1::DAOSpace</a>;
<pre><code><b>use</b> <a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace">0x1::DAOPluginMarketplace</a>;
<b>use</b> <a href="DAOSpace.md#0x1_DAOSpace">0x1::DAOSpace</a>;
<b>use</b> <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability">0x1::GenesisSignerCapability</a>;
<b>use</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">0x1::InstallPluginProposalPlugin</a>;
<b>use</b> <a href="Option.md#0x1_Option">0x1::Option</a>;
<b>use</b> <a href="Vector.md#0x1_Vector">0x1::Vector</a>;
Expand Down Expand Up @@ -94,6 +97,50 @@
</dl>


</details>

<a name="0x1_MemberProposalPlugin_initialize"></a>

## Function `initialize`



<pre><code><b>public</b> <b>fun</b> <a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin_initialize">initialize</a>()
</code></pre>



<details>
<summary>Implementation</summary>


<pre><code><b>public</b> <b>fun</b> <a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin_initialize">initialize</a>() {
<b>let</b> signer = <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability_get_genesis_signer">GenesisSignerCapability::get_genesis_signer</a>();

<a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace_register_plugin">DAOPluginMarketplace::register_plugin</a>&lt;<a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin">MemberProposalPlugin</a>&gt;(
&signer,
b"<a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin">0x1::MemberProposalPlugin</a>",
b"The plugin for member proposal",
<a href="Option.md#0x1_Option_none">Option::none</a>(),
);

<b>let</b> implement_extpoints = <a href="Vector.md#0x1_Vector_empty">Vector::empty</a>&lt;vector&lt;u8&gt;&gt;();
<b>let</b> depend_extpoints = <a href="Vector.md#0x1_Vector_empty">Vector::empty</a>&lt;vector&lt;u8&gt;&gt;();

<b>let</b> witness = <a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin">MemberProposalPlugin</a>{};
<a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace_publish_plugin_version">DAOPluginMarketplace::publish_plugin_version</a>&lt;<a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin">MemberProposalPlugin</a>&gt;(
&signer,
&witness,
b"v0.1.0",
*&implement_extpoints,
*&depend_extpoints,
b"inner-plugin://member-proposal-plugin",
);
}
</code></pre>



</details>

<a name="0x1_MemberProposalPlugin_required_caps"></a>
Expand Down
2 changes: 2 additions & 0 deletions build/StarcoinFramework/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ This is the root document for the Move StarcoinFramework module documentation. T
- [`0x1::ConsensusStrategy`](ConsensusStrategy.md#0x1_ConsensusStrategy)
- [`0x1::CoreAddresses`](CoreAddresses.md#0x1_CoreAddresses)
- [`0x1::DAOAccount`](DAOAccount.md#0x1_DAOAccount)
- [`0x1::DAOExtensionPoint`](DAOExtensionPoint.md#0x1_DAOExtensionPoint)
- [`0x1::DAOPluginMarketplace`](DAOPluginMarketplace.md#0x1_DAOPluginMarketplace)
- [`0x1::DAORegistry`](DAORegistry.md#0x1_DAORegistry)
- [`0x1::DAOSpace`](DAOSpace.md#0x1_DAOSpace)
- [`0x1::Dao`](Dao.md#0x1_Dao)
Expand Down
22 changes: 22 additions & 0 deletions build/StarcoinFramework/docs/StdlibUpgradeScripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,35 @@ The module for StdlibUpgrade init scripts


<pre><code><b>use</b> <a href="Account.md#0x1_Account">0x1::Account</a>;
<b>use</b> <a href="AnyMemberPlugin.md#0x1_AnyMemberPlugin">0x1::AnyMemberPlugin</a>;
<b>use</b> <a href="Block.md#0x1_Block">0x1::Block</a>;
<b>use</b> <a href="Collection.md#0x1_Collection">0x1::Collection</a>;
<b>use</b> <a href="Config.md#0x1_Config">0x1::Config</a>;
<b>use</b> <a href="ConfigProposalPlugin.md#0x1_ConfigProposalPlugin">0x1::ConfigProposalPlugin</a>;
<b>use</b> <a href="CoreAddresses.md#0x1_CoreAddresses">0x1::CoreAddresses</a>;
<b>use</b> <a href="DAOExtensionPoint.md#0x1_DAOExtensionPoint">0x1::DAOExtensionPoint</a>;
<b>use</b> <a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace">0x1::DAOPluginMarketplace</a>;
<b>use</b> <a href="DAORegistry.md#0x1_DAORegistry">0x1::DAORegistry</a>;
<b>use</b> <a href="GenesisNFT.md#0x1_GenesisNFT">0x1::GenesisNFT</a>;
<b>use</b> <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability">0x1::GenesisSignerCapability</a>;
<b>use</b> <a href="GrantProposalPlugin.md#0x1_GrantProposalPlugin">0x1::GrantProposalPlugin</a>;
<b>use</b> <a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin">0x1::InstallPluginProposalPlugin</a>;
<b>use</b> <a href="LanguageVersion.md#0x1_LanguageVersion">0x1::LanguageVersion</a>;
<b>use</b> <a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin">0x1::MemberProposalPlugin</a>;
<b>use</b> <a href="MintProposalPlugin.md#0x1_MintProposalPlugin">0x1::MintProposalPlugin</a>;
<b>use</b> <a href="NFT.md#0x1_NFT">0x1::NFT</a>;
<b>use</b> <a href="Offer.md#0x1_Offer">0x1::Offer</a>;
<b>use</b> <a href="OnChainConfigDao.md#0x1_OnChainConfigDao">0x1::OnChainConfigDao</a>;
<b>use</b> <a href="Oracle.md#0x1_Oracle">0x1::Oracle</a>;
<b>use</b> <a href="STC.md#0x1_STC">0x1::STC</a>;
<b>use</b> <a href="Oracle.md#0x1_STCUSDOracle">0x1::STCUSDOracle</a>;
<b>use</b> <a href="StakeToSBTPlugin.md#0x1_StakeToSBTPlugin">0x1::StakeToSBTPlugin</a>;
<b>use</b> <a href="StarcoinDAO.md#0x1_StarcoinDAO">0x1::StarcoinDAO</a>;
<b>use</b> <a href="Timestamp.md#0x1_Timestamp">0x1::Timestamp</a>;
<b>use</b> <a href="Token.md#0x1_Token">0x1::Token</a>;
<b>use</b> <a href="Treasury.md#0x1_Treasury">0x1::Treasury</a>;
<b>use</b> <a href="TreasuryWithdrawDaoProposal.md#0x1_TreasuryWithdrawDaoProposal">0x1::TreasuryWithdrawDaoProposal</a>;
<b>use</b> <a href="UpgradeModulePlugin.md#0x1_UpgradeModulePlugin">0x1::UpgradeModulePlugin</a>;
</code></pre>


Expand Down Expand Up @@ -391,6 +401,18 @@ deprecated, use <code>do_upgrade_from_v6_to_v7_with_language_version</code>.


<pre><code><b>public</b> <b>fun</b> <a href="StdlibUpgradeScripts.md#0x1_StdlibUpgradeScripts_do_upgrade_from_v12_to_v12_1">do_upgrade_from_v12_to_v12_1</a>() {
<a href="DAOExtensionPoint.md#0x1_DAOExtensionPoint_initialize">DAOExtensionPoint::initialize</a>();
<a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace_initialize">DAOPluginMarketplace::initialize</a>();

<a href="AnyMemberPlugin.md#0x1_AnyMemberPlugin_initialize">AnyMemberPlugin::initialize</a>();
<a href="ConfigProposalPlugin.md#0x1_ConfigProposalPlugin_initialize">ConfigProposalPlugin::initialize</a>();
<a href="GrantProposalPlugin.md#0x1_GrantProposalPlugin_initialize">GrantProposalPlugin::initialize</a>();
<a href="InstallPluginProposalPlugin.md#0x1_InstallPluginProposalPlugin_initialize">InstallPluginProposalPlugin::initialize</a>();
<a href="MemberProposalPlugin.md#0x1_MemberProposalPlugin_initialize">MemberProposalPlugin::initialize</a>();
<a href="MintProposalPlugin.md#0x1_MintProposalPlugin_initialize">MintProposalPlugin::initialize</a>();
<a href="StakeToSBTPlugin.md#0x1_StakeToSBTPlugin_initialize">StakeToSBTPlugin::initialize</a>();
<a href="UpgradeModulePlugin.md#0x1_UpgradeModulePlugin_initialize">UpgradeModulePlugin::initialize</a>();

//TODO : config rate need mind
<a href="StarcoinDAO.md#0x1_StarcoinDAO_create_dao">StarcoinDAO::create_dao</a>( 60000, 120000, 10, 10000, 1000 * 1000 * 1000 * 1000);
}
Expand Down
Binary file modified build/StarcoinFramework/source_maps/GenesisSignerCapability.mvsm
Binary file not shown.
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/MemberProposalPlugin.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/StdlibUpgradeScripts.mvsm
Binary file not shown.
28 changes: 28 additions & 0 deletions integration-tests/daospace/dao_extension_point_init.exp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
processed 6 tasks

task 3 'run'. lines 7-15:
{
"gas_used": 177755,
"status": "Executed"
}

task 4 'view'. lines 17-17:
store key 0x00000000000000000000000000000001::DAOExtensionPoint::Registry {
next_id: 1
}

task 5 'run'. lines 19-27:
{
"gas_used": 13211,
"status": {
"MoveAbort": {
"location": {
"Module": {
"address": "0x00000000000000000000000000000001",
"name": "DAOExtensionPoint"
}
},
"abort_code": "25606"
}
}
}
29 changes: 29 additions & 0 deletions integration-tests/daospace/dao_extension_point_init.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//# init -n dev

//# faucet --addr Genesis

//# faucet --addr bob --amount 2000000000

//# run --signers Genesis
script {
use StarcoinFramework::DAOExtensionPoint;

fun main(_sender: signer) {
DAOExtensionPoint::initialize();
}
}
// check: EXECUTED

//# view --address Genesis --resource 0x1::DAOExtensionPoint::Registry

//# run --signers Genesis
script {
use StarcoinFramework::DAOExtensionPoint;

fun main(_sender: signer) {
DAOExtensionPoint::initialize();
}
}
// check: MoveAbort


0 comments on commit 6cccb73

Please sign in to comment.