# Writer

## Introduction

It is a contract to write ACO tokens. Through the data obtained on 0x protocol to market sell ACO tokens is possible to mint and market sell the tokens in only one step.

## Code

[`ACOWriter.sol`](https://github.com/AuctusProject/aco/blob/master/smart-contracts/contracts/periphery/ACOWriter.sol)

## Address

`ACOWriter.sol` is deployed at [`0xE7597F774fD0a15A617894dc39d45A28B97AFa4f`](https://etherscan.io/address/0xE7597F774fD0a15A617894dc39d45A28B97AFa4f) on the Ethereum mainnet.&#x20;

## Read-Only Functions

### weth

`function weth() external view returns(address);`

The WETH address 0x.

### erc20proxy

`function erc20proxy() external view returns(address);`

Address for 0x ERC20 proxy.

## State-Changing Functions

### write

`function write(address acoToken, uint256 collateralAmount, address exchangeAddress, bytes calldata exchangeData) external payable;`

Function to write ACO tokens. The tokens are minted then sold on the 0x exchange. The transaction sender receives the premium.

* `acoToken` Address of the ACO token.&#x20;
* `collateralAmount` Amount of collateral to be deposited.&#x20;
* `exchangeAddress` Address to sell the tokens returned by 0x API.&#x20;
* `exchangeData` Data to be sent to the 0x exchange.

{% hint style="info" %}
When the asset that should be collateralized is not Ether the allowance to the writer contract on the respective ERC20 asset is required.&#x20;
{% endhint %}

{% hint style="info" %}
The function only works when the ACO token is **NOT** expired yet.
{% endhint %}

## ABI

[JSON](http://api.etherscan.io/api?module=contract\&action=getabi\&address=0xE7597F774fD0a15A617894dc39d45A28B97AFa4f\&format=raw)
