# 许可证

### 什么是许可证？[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#what-is-a-permit) <a href="#what-is-a-permit" id="what-is-a-permit"></a>

许可证 `ImmutableERC721` & `ImmutableERC721MintById` 是 EIP-4494.

概述如下 `EIP-4494`许可证是一种审批流程，其中 `owner` 签署一项可批准 `spender` NFT (非同质化通证) 。

许可是使用EIP-712 签名进行本地签名的信息。其语法如下

```
Permit(address spender, uint256 tokenId, uint256 nonce, uint256 deadline)
```

在哪里？

* `spender` 是批准
* `tokenId` 是NFT (非同质化通证) 令牌 ID，用于批准
* `nonce` 是NFT (非同质化通证) 的 nonce ，必须等于 `nonces(tokenId)` 也在 `EIP-4494`)
* `deadline` 是许可证到期的时间戳

温馨提示

`nonce` 是一项重要的安全功能，可防止签名重放。具体来说，它能确保签名不能在同一合同上多次使用。值得注意的是 `nonce` 会在传输 ERC721 令牌时递增，而不是在调用许可证函数时递增。这种区别有助于维护合约安全性的完整性，并确保每个操作都是唯一的，只能执行一次。

### 为什么使用许可证？[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#why-use-permit) <a href="#why-use-permit" id="why-use-permit"></a>

#### 无燃料 批准[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#gasless-approval) <a href="#gasless-approval" id="gasless-approval"></a>

许可证允许无燃料 批准 `owner` 在本地签署许可证并提交给链外的花费者。然后，花费者可以自己提交交易。

您 可以从用户处获得 "许可证"，然后在同一个多方通话中提交许可证和销毁 。它不需要用户授予 `approveForAll` 多呼叫器合同。

#### 安全[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#secure) <a href="#secure" id="secure"></a>

Permit 本机可确保一旦令牌被转移，批准就会失效。它还引入了截止日期的概念，如果当前时间在截止日期之后，则批准将被有效撤销。

#### 为什么不使用 Approvals？[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#why-not-use-approvals) <a href="#why-not-use-approvals" id="why-not-use-approvals"></a>

批准费用为燃料费 ，为未来可能不会发生的事件（例如，订单列表可能不会执行）提供权限。使用许可证的费用仍为燃料费 ，但该费用仅在预期事件发生时使用，例如，已批准的支出人只有在提交交易时才会提交许可证。

#### 何时使用许可证？[​](https://docs.immutable.com/docs/zkEVM/products/contracts/permits#when-to-use-permits) <a href="#when-to-use-permits" id="when-to-use-permits"></a>

**交易**：许可证是市场上的一个重要工具，它使卖方无需预先批准其非期货合约上市。执行许可证的相关燃料费 费用由买方承担，尽管只有在实际执行交易时才会发生。 **多方通话合同**：对于使用Immutable 的预设多方通话合同的任务，许可证提供了各种功能的通用性。一旦这些功能完全开发完成并可供使用，我们将在此提供有关这些功能的详细信息。
