Fungible Token

[Previous << Core Smart Contracts](https://qiita.com/flowcadence/items/e40267a3b8969f140431)
[Next >> Flow Token](https://qiita.com/flowcadence/items/41308221443f207a7921)

https://qiita.com/flowcadence/items/3073d69c6e9895e68b5a#flow-developers

`FungibleToken`コントラクトは、Fungible Token Standardを実装しています。これは、Flow上で2番目にデプロイされたスマートコントラクトです。
* [Basic Fungible Token Tutorial](https://qiita.com/flowcadence/items/d4f98c76d5f88d447345)
* [Fungible Token Guide](https://developers.flow.com/build/guides/fungible-token)
* [Fungible Token Standard Repo](https://github.com/onflow/flow-ft)

`FungibleTokenMetadataViews`および`FungibleTokenSwitchboard`コントラクトも、`FungibleToken`と同じアカウントにデプロイされます。

Source: [FungibleToken.cdc](https://github.com/onflow/flow-ft/blob/master/contracts/FungibleToken.cdc)
| Network | Contract Address |
|:-:|:-:|
| Emulator | `0xee82856bf20e2aa6` |
| Cadence Testing Framework | `0x0000000000000002` |
| Testnet | `0x9a0766d93b6608b7` |
| Mainnet | `0xf233dcee88fe0abe` |

<h1>Transactions</h1>

すべての`FungibleToken`プロジェクトは、`flow-ft` [リポジトリ](https://github.com/onflow/flow-ft/tree/master/transactions)内の汎用(generic)トークン トランザクション/スクリプトを使用することが推奨されます。これらは、fungible tokenスタンダードを適切に実装したトークンであれば、違うネットワーク上であっても、コードのインポートアドレス以外一切変更しなくても、どのようなトークンにも使用できます。

<h1>Events</h1>

すべてのコントラクトから発行されるイベントは、標準的なフォーマットに従います。
```ruby
A.{contract address}.{contract name}.{event name}
```
フォーマットの構成要素は以下の通りです。
* `contract address` - スマートコントラクトがデプロイされたアカウントのアドレス
* `contract name` - ソースコード内のスマートコントラクトの名称
* `event name` - ソースコードで宣言されたイベントの名称

<h2>FungibleToken Events</h2>

Fungible Token標準を実装するコントラクトは、トークンの預け入れやトークンの引き出しなど、関連するアクションが発生するたびに発行される標準的なイベントにアクセスできます。

つまり、プロジェクトが独自のカスタムイベントを実装する必要は、標準的なイベントがプロジェクトの要件を満たさない場合を除き、ないということです。

`FungibleToken`のイベントは、次の形式をとります。
```ruby
A.{contract address}.FungibleToken.Deposited
A.{contract address}.FungibleToken.Withdrawn
```
`contract address`がネットワーク上でクエリーされている`FungibleToken`のアドレスです。各ネットワーク上のアドレスは上部に示されています。

<h3>FungibleToken.Deposited</h3>

```ruby
access(all) event Deposited (
    type: String,
    amount: UFix64,
    to: Address?,
    toUUID: UInt64,
    depositedUUID: UInt64,
    balanceAfter: UFix64
)
```
`FungibleToken.Vault`を実装するリソース型で`deposit()`が呼び出されるたびに、`FungibleToken.Deposited`イベントが以下の引数と一緒に発行されます。
* `type: String`: 入金されたトークンの型のID。
  - 例：`A.4445e7ad11568276.FlowToken.Vault`
* `amount: UFix64`: 入金されたトークンの量。
  - 例：`0.00017485`
* `to: Address?`: トークンを受け取ったVaultを持つアカウントのアドレス。Vaultがアカウントに保管されていない場合、`to`は`nil`になります。
  - 例：`0x4445e7ad11568276`
* `toUUID: UInt64`: トークンを受け取ったVaultのUUID。
  - 例：`177021372071991`
* `depositedUUID: UInt64`：入金された（したがって破棄された）VaultのUUID。
  - 例：`177021372071991`
* `balanceAfter：UFix64`：入金後のVaultの残高。
  - 例：`1.00047545`


<h3>FungibleToken.Withdrawn</h3>

```ruby
access(all) event Withdrawn (
    type: String,
    amount: UFix64,
    from: Address?,
    fromUUID: UInt64,
    withdrawnUUID: UInt64,
    balanceAfter: UFix64
)
```
`FungibleToken.Vault`を実装するリソース型で`withdraw()`が呼び出されると、`FungibleToken.Withdrawn`イベントが以下の引数と一緒に発行されます。
* `type: String`: 引き出されるトークンの型のID。
  - 例：`A.4445e7ad11568276.FlowToken.Vault`
* `amount: UFix64`: 引き出されたトークンの量。
  - 例：`0.00017485`
* `from: Address?`: トークンが引き出されたVaultを持つアカウントのアドレス。Vaultがアカウントに保管されていない場合、`to`は`nil`になります。
  - 例：`0x4445e7ad11568276`
* `fromUUID: UInt64`: トークンが引き出されたVaultのUUID。
  - 例：`177021372071991`
* `withdrawnUUID: UInt64`：引き出されたVaultのUUID。
  - 例：`177021372071991`
* `balanceAfter：UFix64`：引き出された後の、Vaultの残高。
  - 例：`1.00047545`

<h3>FungibleToken.Burned</h3>

```ruby
access(all) event Burned (
    type: String,
    amount: UFix64,
    fromUUID: UInt64
)
```
`FungibleToken.Vault` を実装するFungibleトークンが、`Burner.burn()`メソッドによって焼却されるたびに、このイベントが以下の引数と一緒に発行されます。
* `type: String`: 焼却されたトークンの型のID。
  - 例：`A.4445e7ad11568276.FlowToken.Vault`
* `amount: UFix64`: 焼却されたトークンの数。
  - 例：`0.00017485`
* `fromUUID: UInt64`: 焼却されたVaultのUUID。
  - 例：`177021372071991`

*Last updated on **Dec 11, 2024** by **Chase Fleming***

翻訳元

https://developers.flow.com/build/core-contracts/fungible-token

***

<b>[Previous << Core Smart Contracts](https://qiita.com/flowcadence/items/e40267a3b8969f140431)
</b>

[Flow blockchain / Cadence version1.0ドキュメント](https://qiita.com/flowcadence/items/3073d69c6e9895e68b5a) (Fees)

<b>[Next >> Flow Token](https://qiita.com/flowcadence/items/41308221443f207a7921)</b>