npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

default-nft-contract

v0.0.2

Published

## サマリ

Readme

default-nft-contract

サマリ

本ライブラリは現在開発中であり、テスト未済です。 利用する場合は自己責任でお願いします。

標準的なNFTの機能を備えたコントラクトです。 このプロジェクトで提供するコントラクトを利用することで、よくある機能の実装・テストに時間をかけなくても良くなり、独自ギミック等に注力できます。

インストール方法

npm i default-nft-contract

種類

NFT(BasicNFTByMarkleForMultiWallets)

使い方

以下のように継承してコンストラクタに、コレクション名コレクション略称寄付率を指定するだけで利用できます。 寄付率は0にしても利用可能です。 もし本プロジェクトの開発者に売り上げの一部を寄付してくださる利用者の方がいれば1以上の数字を設定してください。

// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0 <0.9.0;

import "./BasicNFTByMarkleForMultiWallets.sol";

contract SampleBasicNFTByMarkleForMultiWallets is
    BasicNFTByMarkleForMultiWallets
{
    // If you are willing to donate, please set the third argument to a number between 1 (0.01%) and 10000 (100%),
    // and the percentage you set will be donated to the library developer when you withdraw.
    constructor() BasicNFTByMarkleForMultiWallets("SampleNFT", "SNFT", 1000) {}
}

機能

主な機能は以下の通りです。

セール

ERC721MultiSaleを利用した複数回のセールを実装しています。 ALはマークルツリーを採用しています。 同一人物の複数ウォレットについて、ALと購入数を一元管理できます。

どのウォレットが同一人物のものであるかの確認は本プロジェクトのスコープ外です。 別途、ご確認の上ご利用ください。

エアドロップ

管理者から複数のウォレット宛てに一括でミントできます。

交換

NFTをバーンし、新しいNFTを入手する機能です。(NinjaDAO界隈での所謂バー忍)

OpenSeaのクリエイターフィーを受け取るための実装

OpenSeaのクリエイターフィーを受け取るための実装を入れてあります。 ERC2981の実装も入っているため、2023/1月から適用されるルールにも対応しています。

approveの抑制

ContractAllowListを用いて、信頼できるコントラクトのみapprove可能としています。

ロック

ホルダーの意思でNFTのtransferを抑制できるようにしています。 機能はCNP Rebornリボロックと同様です。

ロックには以下の二種類があります。

  • トークンロック(Token lock):
    1つ1つロック・アンロックを行う方法です。
  • ウォレットロック(Wallet lock):
    ウォレット指定でロック・アンロックを行う方法です。 ウォレットロック中のウォレットに新たにトークンを入れると自動的にロックされます。 多数のトークンをトークンロックするよりもウォレットロックの方がガス代が安くなります。

トークンロックの方がウォレットロックよりも優先されます。 例えばウォレットロック中でもトークンアンロックすれば、一部のトークンをアンロックできます。

ロック状態のトークンをアンロックした場合、アンロック操作してから3時間はロック状態が継続されます。 これはアンロックとトランスファーを行わせるスキャムサイトが登場してもすぐにトランスファーできないことでホルダーを守るための仕組みです。

ロック中はトークンURLの拡張子前に_lockが付きます。 これにより、ロック中のみ画像を特別なものに差し替えることができます。 利用しない場合はoverrideして_lockが付かないようにしてください。

オフチェーンメタデータ・フルオンチェーン切り替え対応

デフォルト実装ではオフチェーンにメタデータが存在する前提の実装ですが、外部コントラクトからtokenURIを受け取る用切り替えられるようにしてあります。

NonFungibleSBT(BasicNonFungibleSBT)

ERC721ベースの代替不能なSBTです。 トークン毎に状態を持たせたいケースで利用します。

使い方

以下のように継承してコンストラクタに、コレクション名コレクション略称寄付率を指定するだけで利用できます。 寄付率は0にしても利用可能です。 もし本プロジェクトの開発者に売り上げの一部を寄付してくださる利用者の方がいれば1以上の数字を設定してください。

// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0 <0.9.0;

import "./BasicNonFungibleSBT.sol";

contract SampleBasicNonFungibleSBT is
    BasicNonFungibleSBT
{
    // If you are willing to donate, please set the third argument to a number between 1 (0.01%) and 10000 (100%),
    // and the percentage you set will be donated to the library developer when you withdraw.
    constructor() BasicNonFungibleSBT("SampleSBT", "SSBT", 1000) {}
}

機能

主な機能は以下の通りです。

セール

ERC721MultiSaleを利用した複数回のセールを実装しています。 ALはマークルツリーを採用しています。 同一人物の複数ウォレットについて、ALと購入数を一元管理できます。

どのウォレットが同一人物のものであるかの確認は本プロジェクトのスコープ外です。 別途、ご確認の上ご利用ください。

エアドロップ

管理者から複数のウォレット宛てに一括でミントできます。

burn

NFT保有者に限り、自身のNFTをburnできます。

approve禁止

SBTであるため、いかなるコントラクトでもapproveできないようにしてあります。

transfer禁止

SBTであるため、以下のケースをのぞいてtransferは禁止してあります。

  • mint(0アドレスからのtransferは許可)
  • burn(0アドレスへのtransferは許可)

オフチェーンメタデータ・フルオンチェーン切り替え対応

デフォルト実装ではオフチェーンにメタデータが存在する前提の実装ですが、外部コントラクトからtokenURIを受け取る用切り替えられるようにしてあります。

FungibleSBT(BasicFungibleSBT)

ERC1155ベースの代替可能なSBTです。 複数種類のSBTをガス代を節約しつつ作りたいときに利用します。 代替可能であるため、同一トークンIDのSBTは全く同じものとして扱われます。

使い方

以下のように継承するだけで利用できます。

// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.8.0 <0.9.0;

import "./BasicFungibleSBT.sol";

contract SampleBasicFungibleSBT is BasicFungibleSBT {}

機能

主な機能は以下の通りです。

エアドロップ

管理者から複数のウォレット宛てに一括でミントできます。

burn

NFT保有者に限り、自身のNFTをburnできます。

approve禁止

SBTであるため、いかなるコントラクトでもapproveできないようにしてあります。

transfer禁止

SBTであるため、以下のケースをのぞいてtransferは禁止してあります。

  • mint(0アドレスからのtransferは許可)
  • burn(0アドレスへのtransferは許可)

オフチェーンメタデータ・フルオンチェーン切り替え対応

デフォルト実装ではオフチェーンにメタデータが存在する前提の実装ですが、外部コントラクトからtokenURIを受け取る用切り替えられるようにしてあります。