ACOProxy.sol
. The implementation of the factory is responsible to create all the ACO tokens. The factory serves as a public registry and is used to look up all ACO tokens added to the system. It is also used to set the ACO tokens' implementation address used to deploy a new one. It also contains logic to turn on the protocol charge. At the moment there are no protocol fees. ACOFactory.sol
is deployed at 0x176b98ab38d1aE8fF3F30bF07f9B93E26F559C17
on the Ethereum mainnet. event SetFactoryAdmin(address indexed previousFactoryAdmin, address indexed newFactoryAdmin);
previousFactoryAdmin
Address of the previous factory admin.newFactoryAdmin
Address of the new factory admin.event SetAcoTokenImplementation(address indexed previousAcoTokenImplementation, address indexed newAcoTokenImplementation);
previousAcoTokenImplementation
Address of the previous ACO token implementation.newAcoTokenImplementation
Address of the new ACO token implementation.event SetAcoFee(uint256 indexed previousAcoFee, uint256 indexed newAcoFee);
previousAcoFee
Value of the previous ACO fee.newAcoFee
Value of the new ACO fee.event SetAcoFeeDestination(address indexed previousAcoFeeDestination, address indexed newAcoFeeDestination);
previousAcoFeeDestination
Address of the previous ACO fee destination.newAcoFeeDestination
Address of the new ACO fee destination.event NewAcoToken(address indexed underlying, address indexed strikeAsset, bool indexed isCall, uint256 strikePrice, uint256 expiryTime, address acoToken, address acoTokenImplementation);
underlying
Address of the underlying asset (address(0)
for Ethereum).strikeAsset
Address of the strike asset (address(0)
for Ethereum).isCall
True if the type is CALL, false for PUT.strikePrice
The strike price with the strike asset precision.expiryTime
The UNIX time for the ACO token expiration.acoToken
Address of the new ACO token created.acoTokenImplementation
Address of the ACO token implementation used on creation.function factoryAdmin() external view returns(address);
function acoTokenImplementation() external view returns(address);
function acoFee() external view returns(uint256);
function acoFeeDestination() external view returns(address);
function init(address _factoryAdmin, address _acoTokenImplementation, uint256 _acoFee, address _acoFeeDestination) external;
data
argument when creating the proxy implementation. It must be called only once. The assert
is to guarantee that behavior.function setFactoryAdmin(address newFactoryAdmin) external;
newFactoryAdmin
Address of the new factory admin.function setAcoTokenImplementation(address newAcoTokenImplementation) external;
newAcoTokenImplementation
Address of the new ACO token implementation.function setAcoFee(uint256 newAcoFee) external;
newAcoFee
Value of the new ACO fee. It is a percentage value (100000 is 100%).function setAcoFeeDestination(address newAcoFeeDestination) external;
newAcoFeeDestination
Address of the new ACO fee destination.function createAcoToken( address underlying, address strikeAsset, bool isCall, uint256 strikePrice, uint256 expiryTime, uint256 maxExercisedAccounts ) external;
underlying
Address of the underlying asset (0x0 for Ethereum).strikeAsset
Address of the strike asset (0x0 for Ethereum).isCall
Whether the ACO token is the Call type. (False for Put)strikePrice
The strike price with the strike asset precision.expiryTime
The UNIX time for the ACO token expiration.maxExercisedAccounts
The maximum number of accounts that can be exercised by a transaction.