Skip to content

Commit

Permalink
Revert "Refactor root cap (#198)"
Browse files Browse the repository at this point in the history
This reverts commit b30fdc9.
  • Loading branch information
nkysg committed Mar 3, 2023
1 parent ec30ca2 commit fd03dc8
Show file tree
Hide file tree
Showing 32 changed files with 515 additions and 323 deletions.
6 changes: 3 additions & 3 deletions integration-tests/daospace/dao_create.exp
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ store key 0x00000000000000000000000000000001::DAOAccount::DAOAccountCap {
dao_address: bf3a917cf4fb6425b95cc12763e6038b
}

task 7 'run'. lines 55-63:
task 7 'run'. lines 59-67:
{
"gas_used": 79013,
"status": "Executed"
}

task 10 'run'. lines 69-77:
task 10 'run'. lines 73-84:
{
"gas_used": 1058109,
"gas_used": 1184587,
"status": "Executed"
}
19 changes: 13 additions & 6 deletions integration-tests/daospace/dao_create.move
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ module 0xbf3a917cf4fb6425b95cc12763e6038b::XDAO {
use StarcoinFramework::Option;
use StarcoinFramework::DAOSpace;
use StarcoinFramework::DAOAccount;
struct X has store, drop {}
use StarcoinFramework::Signer;
use StarcoinFramework::InstallPluginProposalPlugin::{Self, InstallPluginProposalPlugin};
use StarcoinFramework::MemberProposalPlugin::{Self, MemberProposalPlugin};
struct X has store{}

const NAME: vector<u8> = b"X";
public (script) fun create_new_proposal_dao(
Expand All @@ -44,11 +47,12 @@ module 0xbf3a917cf4fb6425b95cc12763e6038b::XDAO {
);

let cap = DAOAccount::extract_dao_account_cap(&sender);
DAOSpace::create_dao<X>(cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", config);
let dao_root_cap = DAOSpace::create_dao<X>(cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", X{}, config);

let witness = X {};
let member_cap = DAOSpace::acquire_member_cap<X, X>(&witness);
DAOSpace::join_member_with_member_cap(&member_cap, &sender, Option::none<vector<u8>>(), Option::none<vector<u8>>(), 1);
DAOSpace::install_plugin_with_root_cap<X, InstallPluginProposalPlugin>(&dao_root_cap, InstallPluginProposalPlugin::required_caps());
DAOSpace::install_plugin_with_root_cap<X, MemberProposalPlugin>(&dao_root_cap, MemberProposalPlugin::required_caps());
DAOSpace::join_member_with_root_cap(&dao_root_cap, Signer::address_of(&sender), Option::none<vector<u8>>(), Option::none<vector<u8>>(), 1);
DAOSpace::burn_root_cap(dao_root_cap);
}
}

Expand All @@ -68,9 +72,12 @@ script{

//# run --signers alice
script{
use 0xbf3a917cf4fb6425b95cc12763e6038b::XDAO;
use StarcoinFramework::DAOSpace;
use StarcoinFramework::IdentifierNFT;
use 0xbf3a917cf4fb6425b95cc12763e6038b::XDAO::{Self, X};

fun main(sender: signer){
IdentifierNFT::accept<DAOSpace::DAOMember<X>, DAOSpace::DAOMemberBody<X>>(&sender);
XDAO::create_new_proposal_dao(sender, 1000, 1000, 1, 1000, 1000);
}
}
Expand Down
19 changes: 19 additions & 0 deletions integration-tests/daospace/dao_ext.exp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
processed 9 tasks

task 6 'run'. lines 56-65:
{
"gas_used": 1035167,
"status": "Executed"
}

task 7 'run'. lines 67-76:
{
"gas_used": 63423,
"status": "Executed"
}

task 8 'run'. lines 78-87:
{
"gas_used": 63423,
"status": "Executed"
}
87 changes: 87 additions & 0 deletions integration-tests/daospace/dao_ext.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
//# init -n dev

//# faucet --addr creator --amount 100000000000

//# faucet --addr alice --amount 10000000000

//# faucet --addr bob --amount 10000000000

//# publish
module creator::DAOHelper {
use StarcoinFramework::DAOAccount;
use StarcoinFramework::DAOSpace;
use StarcoinFramework::Option;

struct X has store, copy, drop {
value: u64,
}

const NAME: vector<u8> = b"X";

/// directly upgrade the sender account to DAOAccount and create DAO
public(script) fun create_dao(
sender: signer,
voting_delay: u64,
voting_period: u64,
voting_quorum_rate: u8,
min_action_delay: u64,
min_proposal_deposit: u128, ) {
let dao_account_cap = DAOAccount::upgrade_to_dao(sender);


//let dao_signer = DAOAccount::dao_signer(&dao_account_cap);
let config = DAOSpace::new_dao_config(
voting_delay,
voting_period,
voting_quorum_rate,
min_action_delay,
min_proposal_deposit,
);
let dao_ext = X { value: 0};
let dao_root_cap = DAOSpace::create_dao<X>(dao_account_cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", dao_ext, config);

DAOSpace::burn_root_cap(dao_root_cap);
}

public fun modify_ext(value: u64): u64 {
let witness = X { value: 0 };
let X { value: old_value } = DAOSpace::take_ext(&witness);
DAOSpace::save_ext(X { value });
old_value
}
}

//# block --author 0x1 --timestamp 86400000

//# run --signers creator
script {
use creator::DAOHelper;

fun main(sender: signer) {
// time unit is millsecond
DAOHelper::create_dao(sender, 10000, 3600000, 2, 10000, 10);
}
}
// check: EXECUTED

//# run --signers alice
script {
use creator::DAOHelper;

fun main(_sender: signer) {
let ext_value = DAOHelper::modify_ext(123);
assert!(ext_value == 0, 101);
}
}
// check: EXECUTED

//# run --signers bob
script {
use creator::DAOHelper;

fun main(_sender: signer) {
let ext_value = DAOHelper::modify_ext(234);
assert!(ext_value == 123, 101);
}
}
// check: EXECUTED
22 changes: 11 additions & 11 deletions integration-tests/daospace/dao_grant.exp
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
processed 17 tasks

task 8 'run'. lines 104-115:
task 8 'run'. lines 107-118:
{
"gas_used": 1677839,
"gas_used": 1645442,
"status": "Executed"
}

task 9 'run'. lines 117-136:
task 9 'run'. lines 120-139:
{
"gas_used": 445521,
"gas_used": 427915,
"status": "Executed"
}

task 10 'run'. lines 138-170:
task 10 'run'. lines 141-173:
{
"gas_used": 666211,
"gas_used": 630999,
"status": "Executed"
}

task 12 'run'. lines 174-186:
task 12 'run'. lines 177-189:
{
"gas_used": 52853,
"status": {
Expand All @@ -34,20 +34,20 @@ task 12 'run'. lines 174-186:
}
}

task 13 'run'. lines 188-208:
task 13 'run'. lines 191-211:
{
"gas_used": 253287,
"status": "Executed"
}

task 15 'run'. lines 212-232:
task 15 'run'. lines 215-235:
{
"gas_used": 240921,
"status": "Executed"
}

task 16 'run'. lines 234-248:
task 16 'run'. lines 237-251:
{
"gas_used": 362869,
"gas_used": 345263,
"status": "Executed"
}
13 changes: 8 additions & 5 deletions integration-tests/daospace/dao_grant.move
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,15 @@ module creator::DAOHelper {
min_action_delay,
min_proposal_deposit,
);
DAOSpace::create_dao<X>(dao_account_cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", config);
let dao_root_cap = DAOSpace::create_dao<X>(dao_account_cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", X{}, config);

DAOSpace::install_plugin_with_root_cap<X, InstallPluginProposalPlugin>(&dao_root_cap, InstallPluginProposalPlugin::required_caps());
DAOSpace::install_plugin_with_root_cap<X, AnyMemberPlugin>(&dao_root_cap, AnyMemberPlugin::required_caps());

DAOSpace::install_plugin_with_root_cap<X, XPlugin>(&dao_root_cap, required_caps());

DAOSpace::burn_root_cap(dao_root_cap);

let install_cap = DAOSpace::acquire_install_plugin_cap<X, X>(&X{});
DAOSpace::install_plugin<X, X, InstallPluginProposalPlugin>(&install_cap, InstallPluginProposalPlugin::required_caps());
DAOSpace::install_plugin<X, X, AnyMemberPlugin>(&install_cap, AnyMemberPlugin::required_caps());
DAOSpace::install_plugin<X, X, XPlugin>(&install_cap, required_caps());
}

struct XPlugin has store, drop{}
Expand Down
30 changes: 15 additions & 15 deletions integration-tests/daospace/dao_member_proposal.exp
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
processed 29 tasks

task 8 'run'. lines 69-78:
task 8 'run'. lines 71-80:
{
"gas_used": 1292086,
"gas_used": 1259689,
"status": "Executed"
}

task 10 'run'. lines 82-89:
task 10 'run'. lines 84-91:
{
"gas_used": 630062,
"gas_used": 608438,
"status": "Executed"
}

task 15 'run'. lines 98-112:
task 15 'run'. lines 100-114:
{
"gas_used": 104830,
"status": "Executed"
}

task 17 'run'. lines 116-127:
task 17 'run'. lines 118-129:
{
"gas_used": 577624,
"status": "Executed"
}

task 18 'run'. lines 129-138:
task 18 'run'. lines 131-140:
{
"gas_used": 523042,
"gas_used": 505220,
"status": "Executed"
}

task 21 'call'. lines 144-144:
task 21 'call'. lines 146-146:
"0xa7dcef9aef26202fce82a7c7d6672afb/1/0x00000000000000000000000000000001::IdentifierNFT::IdentifierNFT<0x00000000000000000000000000000001::DAOSpace::DAOMember<0x662ba5a1a1da0f1c70a9762c7eeb7aaf::DAOHelper::X>,0x00000000000000000000000000000001::DAOSpace::DAOMemberBody<0x662ba5a1a1da0f1c70a9762c7eeb7aaf::DAOHelper::X>>"

task 23 'run'. lines 148-162:
task 23 'run'. lines 150-164:
{
"gas_used": 6238590,
"status": "Executed"
}

task 25 'run'. lines 166-176:
task 25 'run'. lines 168-178:
{
"gas_used": 109761,
"status": "Executed"
}

task 27 'run'. lines 180-190:
task 27 'run'. lines 182-192:
{
"gas_used": 490902,
"gas_used": 455258,
"status": "Executed"
}

task 28 'run'. lines 192-202:
task 28 'run'. lines 194-204:
{
"gas_used": 428125,
"gas_used": 424233,
"status": "Executed"
}
12 changes: 7 additions & 5 deletions integration-tests/daospace/dao_member_proposal.move
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,14 @@ module creator::DAOHelper {
min_action_delay,
min_proposal_deposit,
);
DAOSpace::create_dao<X>(dao_account_cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", config);
let dao_root_cap = DAOSpace::create_dao<X>(dao_account_cap, *&NAME, Option::none<vector<u8>>(), Option::none<vector<u8>>(), b"ipfs://description", X{}, config);

DAOSpace::install_plugin_with_root_cap<X, InstallPluginProposalPlugin>(&dao_root_cap, InstallPluginProposalPlugin::required_caps());
DAOSpace::install_plugin_with_root_cap<X, AnyMemberPlugin>(&dao_root_cap, AnyMemberPlugin::required_caps());
DAOSpace::install_plugin_with_root_cap<X, MemberProposalPlugin>(&dao_root_cap, MemberProposalPlugin::required_caps());

DAOSpace::burn_root_cap(dao_root_cap);

let install_cap = DAOSpace::acquire_install_plugin_cap<X, X>(&X{});
DAOSpace::install_plugin<X, X, InstallPluginProposalPlugin>(&install_cap, InstallPluginProposalPlugin::required_caps());
DAOSpace::install_plugin<X, X, AnyMemberPlugin>(&install_cap, AnyMemberPlugin::required_caps());
DAOSpace::install_plugin<X, X, MemberProposalPlugin>(&install_cap, MemberProposalPlugin::required_caps());
}

public fun create_offer_proposal(sender: &signer, title:vector<u8>, introduction:vector<u8>, description: vector<u8>, member: address, image_data:vector<u8>, image_url:vector<u8>, init_sbt: u128, action_delay: u64){
Expand Down
Loading

0 comments on commit fd03dc8

Please sign in to comment.