> For the complete documentation index, see [llms.txt](https://yuga.gitbook.io/zkyuga-whitepaper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yuga.gitbook.io/zkyuga-whitepaper/developer-guide/erc20/burnfrom.md).

# burnFrom

The `burnFrom` function enables a user or contract to destroy a specified quantity of tokens from another user's account. This action necessitates prior authorization from the token owner, typically granted through the `approve` method. The ability to burn tokens from another user's account can be implemented within specific token contracts for particular use cases, such as staking or governance scenarios.

### Function Signature

```javascript
async burnFrom(from: string, amount: BigNumberish, signer: WalletSigner): Promise<string>
```

#### Parameters

| Parameter | Type         | Description                                                                                                           |
| --------- | ------------ | --------------------------------------------------------------------------------------------------------------------- |
| from      | string       | The Ethereum address from which the tokens are to be burned.                                                          |
| amount    | BigNumberish | The quantity of tokens to be burned, specified in the smallest unit of the token (e.g., Wei for Ether).               |
| signer    | WalletSigner | The wallet signer instance responsible for signing the burn transaction. Typically created with `createWalletSigner`. |

#### Returns

* A `Promise` resolving to a `string`, typically representing the transaction hash corresponding to the burn operation.

### Example Usage

Assuming the appropriate token contract is already instantiated:

```javascript
const fromAddress = "0xF39Fd6e51aad88F6F4ce6aB8827279cffFb92266";
const burnAmount = "1000000000000000000"; // Representing 1 token, given an 18-decimal precision
const signer = zkyugaClient.createWalletSigner("your private key");

const transactionHash = await erc20.burnFrom(fromAddress, burnAmount, signer);
console.log(`Burn Transaction Hash: ${transactionHash}`);
```

### Considerations

* Prior to executing the `burnFrom` method, ensure that the `from` address has granted sufficient allowance to the `signer` via the `approve` method.
* Remember that the `amount` is specified in the smallest divisible unit of the token. Accurate management of conversions is crucial.
* As a security precaution, safeguard the confidentiality of your private keys and exercise caution when using the `signer` in potentially insecure environments.

***
