Skip to content
This repository has been archived by the owner on Nov 27, 2024. It is now read-only.

Commit

Permalink
changed language
Browse files Browse the repository at this point in the history
  • Loading branch information
dd0sxx committed Dec 8, 2023
1 parent 8bf6976 commit a553161
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 140 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repository.

## Modules

- **Token Voting:** smart contract policies that allow `ERC20Votes` or `ERC721Votes` tokenholders to create actions enforced by delegated token thresholds or collectively approve or disapprove an action through token voting.
- **Token Voting:** smart contract policies that allow `ERC20Votes` or `ERC721Votes` tokenHolders to create actions enforced by delegated token thresholds or collectively approve or disapprove an action through token voting.

## Prerequisites

Expand Down
40 changes: 20 additions & 20 deletions script/DeployLlamaTokenVotingFactory.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ pragma solidity 0.8.23;
import {Script} from "forge-std/Script.sol";

import {DeployUtils} from "script/DeployUtils.sol";
import {ERC20TokenholderActionCreator} from "src/token-voting/ERC20TokenholderActionCreator.sol";
import {ERC20TokenholderCaster} from "src/token-voting/ERC20TokenholderCaster.sol";
import {ERC721TokenholderActionCreator} from "src/token-voting/ERC721TokenholderActionCreator.sol";
import {ERC721TokenholderCaster} from "src/token-voting/ERC721TokenholderCaster.sol";
import {ERC20TokenHolderActionCreator} from "src/token-voting/ERC20TokenHolderActionCreator.sol";
import {ERC20TokenHolderCaster} from "src/token-voting/ERC20TokenHolderCaster.sol";
import {ERC721TokenHolderActionCreator} from "src/token-voting/ERC721TokenHolderActionCreator.sol";
import {ERC721TokenHolderCaster} from "src/token-voting/ERC721TokenHolderCaster.sol";
import {LlamaTokenVotingFactory} from "src/token-voting/LlamaTokenVotingFactory.sol";

contract DeployLlamaTokenVotingFactory is Script {
// Logic contracts.
ERC20TokenholderActionCreator erc20TokenholderActionCreatorLogic;
ERC20TokenholderCaster erc20TokenholderCasterLogic;
ERC721TokenholderActionCreator erc721TokenholderActionCreatorLogic;
ERC721TokenholderCaster erc721TokenholderCasterLogic;
ERC20TokenHolderActionCreator erc20TokenHolderActionCreatorLogic;
ERC20TokenHolderCaster erc20TokenHolderCasterLogic;
ERC721TokenHolderActionCreator erc721TokenHolderActionCreatorLogic;
ERC721TokenHolderCaster erc721TokenHolderCasterLogic;

// Factory contracts.
LlamaTokenVotingFactory tokenVotingFactory;
Expand All @@ -26,37 +26,37 @@ contract DeployLlamaTokenVotingFactory is Script {
);

vm.broadcast();
erc20TokenholderActionCreatorLogic = new ERC20TokenholderActionCreator();
erc20TokenHolderActionCreatorLogic = new ERC20TokenHolderActionCreator();
DeployUtils.print(
string.concat(" ERC20TokenholderActionCreatorLogic: ", vm.toString(address(erc20TokenholderActionCreatorLogic)))
string.concat(" ERC20TokenHolderActionCreatorLogic: ", vm.toString(address(erc20TokenHolderActionCreatorLogic)))
);

vm.broadcast();
erc20TokenholderCasterLogic = new ERC20TokenholderCaster();
erc20TokenHolderCasterLogic = new ERC20TokenHolderCaster();
DeployUtils.print(
string.concat(" ERC20TokenholderCasterLogic: ", vm.toString(address(erc20TokenholderCasterLogic)))
string.concat(" ERC20TokenHolderCasterLogic: ", vm.toString(address(erc20TokenHolderCasterLogic)))
);

vm.broadcast();
erc721TokenholderActionCreatorLogic = new ERC721TokenholderActionCreator();
erc721TokenHolderActionCreatorLogic = new ERC721TokenHolderActionCreator();
DeployUtils.print(
string.concat(
" ERC721TokenholderActionCreatorLogic: ", vm.toString(address(erc721TokenholderActionCreatorLogic))
" ERC721TokenHolderActionCreatorLogic: ", vm.toString(address(erc721TokenHolderActionCreatorLogic))
)
);

vm.broadcast();
erc721TokenholderCasterLogic = new ERC721TokenholderCaster();
erc721TokenHolderCasterLogic = new ERC721TokenHolderCaster();
DeployUtils.print(
string.concat(" ERC721TokenholderCasterLogic: ", vm.toString(address(erc721TokenholderCasterLogic)))
string.concat(" ERC721TokenHolderCasterLogic: ", vm.toString(address(erc721TokenHolderCasterLogic)))
);

vm.broadcast();
tokenVotingFactory = new LlamaTokenVotingFactory(
erc20TokenholderActionCreatorLogic,
erc20TokenholderCasterLogic,
erc721TokenholderActionCreatorLogic,
erc721TokenholderCasterLogic
erc20TokenHolderActionCreatorLogic,
erc20TokenHolderCasterLogic,
erc721TokenHolderActionCreatorLogic,
erc721TokenHolderCasterLogic
);
DeployUtils.print(string.concat(" LlamaTokenVotingFactory: ", vm.toString(address(tokenVotingFactory))));
}
Expand Down
10 changes: 5 additions & 5 deletions src/token-voting/ERC20TokenholderActionCreator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
pragma solidity ^0.8.23;

import {ILlamaCore} from "src/interfaces/ILlamaCore.sol";
import {TokenholderActionCreator} from "src/token-voting/TokenholderActionCreator.sol";
import {TokenHolderActionCreator} from "src/token-voting/TokenHolderActionCreator.sol";
import {ERC20Votes} from "@openzeppelin/token/ERC20/extensions/ERC20Votes.sol";

/// @title ERC20TokenholderActionCreator
/// @title ERC20TokenHolderActionCreator
/// @author Llama ([email protected])
/// @notice This contract lets holders of a specified `ERC20Votes` token create actions on a llama instance if their
/// token balance is greater than or equal to the creation threshold.
contract ERC20TokenholderActionCreator is TokenholderActionCreator {
contract ERC20TokenHolderActionCreator is TokenHolderActionCreator {
ERC20Votes public token;

/// @dev This contract is deployed as a minimal proxy from the factory's `deployTokenVotingModule` function. The
Expand All @@ -18,7 +18,7 @@ contract ERC20TokenholderActionCreator is TokenholderActionCreator {
_disableInitializers();
}

/// @notice Initializes a new `ERC20TokenholderActionCreator` clone.
/// @notice Initializes a new `ERC20TokenHolderActionCreator` clone.
/// @dev This function is called by the `deployTokenVotingModule` function in the `LlamaTokenVotingFactory` contract.
/// The `initializer` modifier ensures that this function can be invoked at most once.
/// @param _token The ERC20 token to be used for voting.
Expand All @@ -27,7 +27,7 @@ contract ERC20TokenholderActionCreator is TokenholderActionCreator {
/// be in the same decimals as the token. For example, if the token has 18 decimals and you want a
/// creation threshold of 1000 tokens, pass in 1000e18.
function initialize(ERC20Votes _token, ILlamaCore _llamaCore, uint256 _creationThreshold) external initializer {
__initializeTokenholderActionCreatorMinimalProxy(_llamaCore, _creationThreshold);
__initializeTokenHolderActionCreatorMinimalProxy(_llamaCore, _creationThreshold);
token = _token;
uint256 totalSupply = token.totalSupply();
if (totalSupply == 0) revert InvalidTokenAddress();
Expand Down
10 changes: 5 additions & 5 deletions src/token-voting/ERC20TokenholderCaster.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
pragma solidity ^0.8.23;

import {ILlamaCore} from "src/interfaces/ILlamaCore.sol";
import {TokenholderCaster} from "src/token-voting/TokenholderCaster.sol";
import {TokenHolderCaster} from "src/token-voting/TokenHolderCaster.sol";
import {ERC20Votes} from "@openzeppelin/token/ERC20/extensions/ERC20Votes.sol";

/// @title ERC20TokenholderCaster
/// @title ERC20TokenHolderCaster
/// @author Llama ([email protected])
/// @notice This contract lets holders of a given governance ERC20Votes token cast approvals and disapprovals
/// on created actions.
contract ERC20TokenholderCaster is TokenholderCaster {
contract ERC20TokenHolderCaster is TokenHolderCaster {
ERC20Votes public token;

/// @dev This contract is deployed as a minimal proxy from the factory's `deployTokenVotingModule` function. The
Expand All @@ -18,7 +18,7 @@ contract ERC20TokenholderCaster is TokenholderCaster {
_disableInitializers();
}

/// @notice Initializes a new `ERC20TokenholderCaster` clone.
/// @notice Initializes a new `ERC20TokenHolderCaster` clone.
/// @dev This function is called by the `deployTokenVotingModule` function in the `LlamaTokenVotingFactory` contract.
/// The `initializer` modifier ensures that this function can be invoked at most once.
/// @param _token The ERC20 token to be used for voting.
Expand All @@ -33,7 +33,7 @@ contract ERC20TokenholderCaster is TokenholderCaster {
uint256 _minApprovalPct,
uint256 _minDisapprovalPct
) external initializer {
__initializeTokenholderCasterMinimalProxy(_llamaCore, _role, _minApprovalPct, _minDisapprovalPct);
__initializeTokenHolderCasterMinimalProxy(_llamaCore, _role, _minApprovalPct, _minDisapprovalPct);
token = _token;
uint256 totalSupply = token.totalSupply();
if (totalSupply == 0) revert InvalidTokenAddress();
Expand Down
10 changes: 5 additions & 5 deletions src/token-voting/ERC721TokenholderActionCreator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
pragma solidity ^0.8.23;

import {ILlamaCore} from "src/interfaces/ILlamaCore.sol";
import {TokenholderActionCreator} from "src/token-voting/TokenholderActionCreator.sol";
import {TokenHolderActionCreator} from "src/token-voting/TokenHolderActionCreator.sol";
import {ERC721Votes} from "@openzeppelin/token/ERC721/extensions/ERC721Votes.sol";
import {IERC721} from "@openzeppelin/token/ERC721/IERC721.sol";

/// @title ERC721TokenholderActionCreator
/// @title ERC721TokenHolderActionCreator
/// @author Llama ([email protected])
/// @notice This contract lets holders of a given governance ERC721Votes token create actions on the llama instance if
/// they hold enough tokens.
contract ERC721TokenholderActionCreator is TokenholderActionCreator {
contract ERC721TokenHolderActionCreator is TokenHolderActionCreator {
ERC721Votes public token;

/// @dev This contract is deployed as a minimal proxy from the factory's `deployTokenVotingModule` function. The
Expand All @@ -19,7 +19,7 @@ contract ERC721TokenholderActionCreator is TokenholderActionCreator {
_disableInitializers();
}

/// @notice Initializes a new `ERC721TokenholderActionCreator` clone.
/// @notice Initializes a new `ERC721TokenHolderActionCreator` clone.
/// @dev This function is called by the `deployTokenVotingModule` function in the `LlamaTokenVotingFactory` contract.
/// The `initializer` modifier ensures that this function can be invoked at most once.
/// @param _token The ERC721 token to be used for voting.
Expand All @@ -28,7 +28,7 @@ contract ERC721TokenholderActionCreator is TokenholderActionCreator {
/// be in the same decimals as the token. For example, if the token has 18 decimals and you want a
/// creation threshold of 1000 tokens, pass in 1000e18.
function initialize(ERC721Votes _token, ILlamaCore _llamaCore, uint256 _creationThreshold) external initializer {
__initializeTokenholderActionCreatorMinimalProxy(_llamaCore, _creationThreshold);
__initializeTokenHolderActionCreatorMinimalProxy(_llamaCore, _creationThreshold);
token = _token;
if (!token.supportsInterface(type(IERC721).interfaceId)) revert InvalidTokenAddress();
uint256 totalSupply = token.getPastTotalSupply(block.timestamp - 1);
Expand Down
10 changes: 5 additions & 5 deletions src/token-voting/ERC721TokenholderCaster.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
pragma solidity ^0.8.23;

import {ILlamaCore} from "src/interfaces/ILlamaCore.sol";
import {TokenholderCaster} from "src/token-voting/TokenholderCaster.sol";
import {TokenHolderCaster} from "src/token-voting/TokenHolderCaster.sol";
import {ERC721Votes} from "@openzeppelin/token/ERC721/extensions/ERC721Votes.sol";
import {IERC721} from "@openzeppelin/token/ERC721/IERC721.sol";

/// @title ERC721TokenholderCaster
/// @title ERC721TokenHolderCaster
/// @author Llama ([email protected])
/// @notice This contract lets holders of a given governance ERC721Votes token cast approvals and disapprovals
/// on created actions.
contract ERC721TokenholderCaster is TokenholderCaster {
contract ERC721TokenHolderCaster is TokenHolderCaster {
ERC721Votes public token;

/// @dev This contract is deployed as a minimal proxy from the factory's `deployTokenVotingModule` function. The
Expand All @@ -19,7 +19,7 @@ contract ERC721TokenholderCaster is TokenholderCaster {
_disableInitializers();
}

/// @notice Initializes a new `ERC721TokenholderCaster` clone.
/// @notice Initializes a new `ERC721TokenHolderCaster` clone.
/// @dev This function is called by the `deployTokenVotingModule` function in the `LlamaTokenVotingFactory` contract.
/// The `initializer` modifier ensures that this function can be invoked at most once.
/// @param _token The ERC721 token to be used for voting.
Expand All @@ -34,7 +34,7 @@ contract ERC721TokenholderCaster is TokenholderCaster {
uint256 _minApprovalPct,
uint256 _minDisapprovalPct
) external initializer {
__initializeTokenholderCasterMinimalProxy(_llamaCore, _role, _minApprovalPct, _minDisapprovalPct);
__initializeTokenHolderCasterMinimalProxy(_llamaCore, _role, _minApprovalPct, _minDisapprovalPct);
token = _token;
if (!token.supportsInterface(type(IERC721).interfaceId)) revert InvalidTokenAddress();
}
Expand Down
Loading

0 comments on commit a553161

Please sign in to comment.