Factory Methods

Factory methods facilitate the creation, management, and configuration of funding rounds.

1. Initialize New Contract

rustfn initialize(
    env: &Env,
    caller: Address,
    token_address: Address,
    registry_address: Address,
    list_address: Address,
    kyc_list_id: u128,
    protocol_fee_basis_points: Option<u32>,
    protocol_fee_recipient: Option<Address>,
    default_page_size: Option<u64>,
)

Purpose: This method initializes the contract with essential parameters required for its operation.

  • Parameters:

    • env: The environment in which the contract operates.

    • caller: The address of the user calling the initialization function.

    • token_address: The address of the token contract used for transactions.

    • registry_address: The address of the project registry contract.

    • list_address: The address for managing lists related to the contract.

    • kyc_list_id: Identifier for the KYC (Know Your Customer) list.

    • protocol_fee_basis_points: Optional fee structure expressed in basis points.

    • protocol_fee_recipient: Optional address that will receive protocol fees.

    • default_page_size: Optional parameter to set the default pagination size.

2. Create a Round

rustfn create_round(env: &Env, caller: Address, params: CreateRoundParams) -> RoundDetail

Purpose: This method allows users to create a new funding round by providing necessary parameters.

  • Parameters:

    • env: The environment context for executing the method.

    • caller: The address of the user initiating the round creation.

    • params: A struct containing details about the round, such as its name, description, voting period, and expected funding amount.

  • Returns: A RoundDetail object containing information about the newly created round.

3. Upgrade Contract Code

rustfn upgrade(env: &Env, new_wasm_hash: BytesN<32>)

Purpose: This method allows for upgrading the contract's code to a new version.

  • Parameters:

    • env: The environment context for executing the upgrade.

    • new_wasm_hash: A hash representing the new WebAssembly (WASM) code to be deployed.

4. Transfer Ownership

rustfn transfer_ownership(env: &Env, new_owner: Address)

Purpose: This method transfers ownership of the contract to a new address.

  • Parameters:

    • env: The environment context for executing the transfer.

    • new_owner: The address of the new owner who will take over control of the contract.

5. Change Configuration

Set Default Page Size

rustfn owner_set_default_page_size(env: &Env, default_page_size: u64)

Purpose: This method allows the current owner to set a new default page size for pagination in responses.

  • Parameters:

    • env: The environment context for executing this configuration change.

    • default_page_size: The new default size for paginated results.

Set Protocol Fee Configuration

rustfn owner_set_protocol_fee_config(
    env: &Env,
    protocol_fee_recipient: Option<Address>,
    protocol_fee_basis_points: Option<u32>,
)

Purpose: This method enables the current owner to update the protocol fee settings.

  • Parameters:

    • env: The environment context for executing this configuration change.

    • protocol_fee_recipient: Optional address that will receive protocol fees.

    • protocol_fee_basis_points: Optional updated fee structure expressed in basis points.

Read Methods

In addition to factory methods, there are also read methods that allow users to retrieve information from the contract:

1. Get All Rounds in Contract

rustfn get_rounds(env: &Env, skip: Option<u64>, limit: Option<u64>) -> Vec<RoundDetail>

Purpose: This method retrieves all funding rounds managed by the contract.

  • Parameters:

    • env: The environment context for executing this retrieval.

    • skip: Optional parameter to skip a specified number of rounds (for pagination).

    • limit: Optional parameter to limit the number of rounds returned.

  • Returns: A vector of RoundDetail objects representing all available rounds.

2. Get Current Contract Configuration

rustfn get_config(env: &Env) -> Config

Purpose: This method retrieves the current configuration settings of the contract.

  • Parameters:

    • env: The environment context for executing this retrieval.

  • Returns: A Config object containing current settings such as owner address and fee configurations.

Last updated

Was this helpful?