Skip to content
by Unity Nodes
Development

Extending NEP-171 Events Standard to include contract metadata `update` events

8 posts493 views10 likesLast activity Feb 2023

  1. lachlanglenOP 6

    Summary:

    To extend the NEP-171 events standard to include contract_metadata_update event.

    Motivation:

    The existing events standard for NFTs as described in NEP-171 does not include any events to be logged when an NFT contract’s metadata is updated.

    This results in situations where, for instance, a contract owner will update the contract’s base_uri after it is initially deployed, likely a reference to a dedicated IPFS gateway, but none of the contract consumers (wallets, marketplaces etc) are aware of this change and continue serving the NFT media from less reliable/available gateways. A contract_metadata_update event would alert listeners of any change to contract metadata and enable them to remain up-to-date.

    Specification

    contract_metadata_update

    Emitted by NFT contract when any field of NFTContractMetadata is updated. Includes fields that have been updated

    EVENT_JSON:{
      "standard": "nep171",
      "version": "1.1.0",
      "event": "contract_metadata_update",
      "data": [{ "metadata": { "base_uri": "..." }}]
    }
    
  2. minorityprogrammers 2

    I’m for this, want to know if this is more appropriate to put in “standards” section @ori-near

  3. mattlockyer 1

    This makes sense! LGTM!

  4. nearbuild

    can we get to pushing this on github as a PR if its GTG (good to go)

  5. lachlanglen 1

    Opened PR: add contract_metadata_update event by lachlanglen · Pull Request #423 · near/NEPs · GitHub

  6. minorityprogrammers

    Olga replied with adding a dynamic NFT flag Support individual NFT metadata logs / dynamic NFTs · Issue #438 · near/NEPs · GitHub

  7. lachlanglen

    FYI this has been implemented: add contract_metadata_update event by lachlanglen · Pull Request #423 · near/NEPs · GitHub

  8. till_mb

    Related to my post in the token update event standard, let’s keep discussions split for now but hope to do a merged NEP once concerns have been addressed.

    I think we should base the event on metadata NEP177, not on core NEP171, as this has obviously a lot more to do with the former. Other than than, it seems to me that the data field wouldn’t need to be an array (should only ever update the contract from which the event is emitted). Now for my draft I also removed the {metadata : {...}} nesting, which might actually useful in case non-metadata is updated along with it. Other than that, additional properties might always be present in the extensible metadata type, so it’s not strictly necessary:

    EVENT_JSON:{
      "standard": "nep177", // use corresponding metadata NEP as event basis
      "version":" 1.0.0",
      "event": "nft_update_contract",
      "data": { "base_uri": "..." } // remove nesting and array
    }
    

    Regarding the naming, the currently standardized function nft_metadata yields contract-level metadata, so it would make sense for me to keep the nft_ prefix. I have named this consistently as nft_update_contract w.r.t nft_update_token on the token update discussion.