Oasys API 翻訳

# はじめに
Oasysの提供しているAPIの翻訳になります。
精度はあしからず。

# APIドキュメント
[ Base URL: https://scan.oasys.games/api ]
このAPIは、EtherscanからBlockScoutへアプリケーションを移行する開発者向けに提供されています。GETとPOSTリクエストに対応しています。

- Account(アカウント)
  - `?module=account`
- Logs(ログ)
  - `?module=logs`
- Token(トークン)
  - `?module=token`
- Stats(ステータス)
  - `?module=stats`
- Block(ブロック)
  - `?module=block`
- Contract(コントラクト)
  - `?module=contract`
- Transaction(トランザクション)
  - `?module=transaction`

# Account `?module=account`
## eth_get_balance
Ethereum JSON RPC の eth_getBalance を模倣。
指定したブロックの残高を返します (デフォルトは最新)

```
?module=account&action=eth_get_balance&address={addressHash}
```

## balance
アドレスの残高を取得します。
GraphQL の 'addresses' クエリでも取得可能。残高が長い間更新されていない場合、ノードにダブルチェックして絶対的に最新の残高を取得します。
これは現在のリクエストには反映されませんが、一度更新されると、それ以降のリクエストでは更新された残高が表示されます。
別の残高をチェックしているかどうかを知りたい場合は、`balancemulti` アクションを使います。
このアクションには `stale` というプロパティがあり、近い将来に残高を再チェックすることを知らせてくれます。

```
?module=account&action=balance&address={addressHash}
```

## balancemulti
複数のアドレスの残高を取得します。
GraphQLの'addresss'クエリでも取得可能。
残高が長い間更新されていない場合、ノードにダブルチェックを行い、絶対的に最新の残高を取得します。
これは現在のリクエストには反映されませんが、いったん更新されると、それ以降のリクエストでは更新された残高が表示されます。
この処理は `stale` 属性によって行われ、新しい残高が取得されると `true` に設定されます。

```
?module=account&action=balancemulti&address={addressHash1,addressHash2,addressHash3}
```

## pendingtxlist
保留中のトランザクションをアドレス別に取得する。

```
?module=account&action=pendingtxlist&address={addressHash}
```

## txlist
住所から取引を取得。最大10,000件まで。GraphQL 'address'クエリでも利用可能。

```
?module=account&action=txlist&address={addressHash}
```

## txlistinternal
トランザクションまたはアドレス・ハッシュで内部トランザクションを取得。内部トランザクションは最大10,000件まで。GraphQL 'transaction'クエリでも利用可能。

```
?module=account&action=txlistinternal&txhash={transactionHash}
```


## tokentx
アドレス別にトークン移転イベントを取得。最大10,000件のトークン転送イベントを取得可能。GraphQLの'token_transfers'クエリでも取得可能。

```
?module=account&action=tokentx&address={addressHash}
```


## tokenbalance
トークン契約アドレスのトークン口座残高を取得します。

```
?module=account&action=tokenbalance&contractaddress={contractAddressHash}&address={addressHash}
```



## tokenlist
アドレスが所有するトークンのリストを取得します。

```
?module=account&action=tokenlist&address={addressHash}
```



## getminedblocks
アドレスごとに採掘されたブロックのリストを取得する。

```
?module=account&action=getminedblocks&address={addressHash}
```


## listaccounts
口座とその残高のリストを取得し、エクスプローラーが最初に確認した時刻で昇順に並べ替えます。

```
?module=account&action=listaccounts
```

# Logs
## getLogs
アドレスおよび/またはトピックのイベントログを取得します。最大1,000件のイベントログを取得できます。

```
?module=logs&action=getLogs&fromBlock={blockNumber}&toBlock={blockNumber}&address={addressHash}&topic0={firstTopic}
```

# Token
## getToken
契約アドレスからERC-20またはERC-721トークンを取得します。

```
?module=token&action=getToken&contractaddress={contractAddressHash}
```

## getTokenHolders
契約アドレスからトークン保有者を取得する。

```
?module=token&action=getTokenHolders&contractaddress={contractAddressHash}
```

# Stats
## tokensupply
ERC-20またはERC-721トークンの総供給量を契約アドレス別に取得します。

```
?module=stats&action=tokensupply&contractaddress={contractAddressHash}
```


## ethsupplyexchange
取引所からWeiの総供給量を入手する。

```
?module=stats&action=ethsupplyexchange
```

## ethsupply
DBからWeiの総供給量を入手する。

```
?module=stats&action=ethsupply
```

## coinsupply
DBからコインの総供給量から燃焼数を差し引いた値を取得する。

```
?module=stats&action=coinsupply
```

## coinprice
ネイティブコインの最新価格をUSDとBTCで入手。

```
?module=stats&action=coinprice
```

## totalfees
1日に利用者がバリデーターに支払う取引手数料の合計をWeiで取得する。

```
?module=stats&action=totalfees&date={date}
```

# Block
## getblockreward
ブロック番号でブロック報酬を取得する。

```
?module=block&action=getblockreward&blockno={blockNumber}
```

## getblocknobytime
タイムスタンプでブロック番号を取得する。

```
?module=block&action=getblocknobytime×tamp={blockTimestamp}&closest={before/after}
```

## eth_block_number
イーサリアムJSON RPCのeth_blockNumberを模倣。最新のブロック番号を返す

```
?module=block&action=eth_block_number
```

# Contract
## listcontracts
コントラクトの一覧を取得し、エクスプローラで最初に表示された時刻で昇順にソートします。
フィルタに `not_decompiled`(`4`) または `not_verified(4)` を指定した場合は、パフォーマンス上の理由からソートされません。

```
?module=contract&action=listcontracts
```

## getabi
検証済みの契約のABIを取得する。GraphQL の 'addresses' クエリでも取得可能。

```
?module=contract&action=getabi&address={addressHash}
```
## getsourcecode
検証済みの契約のソースコードを取得します。GraphQLの「アドレス」クエリでも利用可能。


```
?module=contract&action=getsourcecode&address={addressHash}
```
## verify
ソースコードと契約作成情報で契約を検証する。


```
?module=contract&action=verify&addressHash={addressHash}&name={name}&compilerVersion={compilerVersion}&optimization={false}&contractSourceCode={contractSourceCode}
```
## verify_via_sourcify
Sourcifyでコントラクトを検証する。
a) スマートコントラクトが既にSourcifyで検証されている場合、自動的にリポジトリからデータを取得します。
b) そうでない場合は、ソースファイルとJSONメタデータファイルをアップロードする必要があります。


```
?module=contract&action=verify_via_sourcify&addressHash={addressHash}
```
## verify_vyper_contract
ソースコードとコントラクト作成情報でvyperコントラクトを検証する。

```
?module=contract&action=verify_vyper_contract&addressHash={addressHash}&name={name}&compilerVersion={compilerVersion}&contractSourceCode={contractSourceCode}
```

## verifysourcecode
標準入力JSONファイルでコントラクトを検証する。そのインターフェイスは Etherscan の API エンドポイントと同じです。


```
?module=contract&action=verifysourcecode&codeformat={solidity-standard-json-input}&contractaddress={contractaddress}&contractname={contractname}&compilerversion={compilerversion}&sourceCode={sourceCode}
```
## checkverifystatus
検証試行のステータスを返す（verifysourcecode メソッドに加えて機能する）


```
?module=contract&action=checkverifystatus&guid={identifierString}
```

# Transaction
## gettxinfo
取引情報を取得する。

```
?module=transaction&action=gettxinfo&txhash={transactionHash}
```

## gettxreceiptstatus
トランザクションの受領ステータスを取得する。GraphQL の 'transaction' クエリでも取得できます。

```
?module=transaction&action=gettxreceiptstatus&txhash={transactionHash}
```

## getstatus
エラーステータスとエラーメッセージを取得します。GraphQL 'transaction'クエリでも利用可能。

```
?module=transaction&action=getstatus&txhash={transactionHash}
```

# 最後に
お役に立てれば幸いです。
気が向いたら、Requestの方も解説を書こうかと思います。