{"id":18599311,"url":"https://github.com/bkawk/dgoods_provenance","last_synced_at":"2025-11-02T08:30:24.574Z","repository":{"id":106273661,"uuid":"408588876","full_name":"bkawk/dgoods_provenance","owner":"bkawk","description":null,"archived":false,"fork":false,"pushed_at":"2021-09-22T20:55:45.000Z","size":301,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-26T22:18:34.409Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bkawk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-20T20:20:50.000Z","updated_at":"2021-09-22T20:55:48.000Z","dependencies_parsed_at":"2023-04-01T02:07:54.524Z","dependency_job_id":null,"html_url":"https://github.com/bkawk/dgoods_provenance","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkawk%2Fdgoods_provenance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkawk%2Fdgoods_provenance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkawk%2Fdgoods_provenance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkawk%2Fdgoods_provenance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkawk","download_url":"https://codeload.github.com/bkawk/dgoods_provenance/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239389582,"owners_count":19630309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T01:38:38.496Z","updated_at":"2025-11-02T08:30:24.514Z","avatar_url":"https://github.com/bkawk.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"dGoods\n======\n\n[dGoods](https://dgoods.org/) is an open source and free standard for handling the virtual representation of items, both\ndigital and physical, on the EOS blockchain led by [Mythical Games](https://mythical.games).\nFungible and non-fungible tokens are represented in this standard, as well as what we term\nsemi-fungible tokens. These are nft's that share many properties but have at minimum a unique serial\nnumber. Things like tickets, luxury goods, or even fractionalized ownership are well suited to this\nclassification and therefore, a major focus of this standard.\n\n---\n\nThree most important properties of dGoods which differentiate from other token standards\n\n1) hierarchical naming structure of category:name for each token or set of tokens, enabling filtering\n  and organization of tokens\n\n2) focus on semi-fungible tokens -- that is, tokens that are 1 of n with a serial number or slightly\ndifferent metadata\n\n3) opensource metadata types and standardization for each type with localization, eg `3dGameAsset`, `Ticket`, etc\n\n---\n\n[View the Latest Spec](dgoods_spec.md)\n======================================\n[Basic Usage Tutorial](example_usage.md)\n========================================\n\nChanges\n=======\n\nv1.1.5 - List For Sale Configurable Time\n----\n\nInstead of a sale lasting a default of one week, it is now configurable and exposed as a parameter\nin `listsalenft`.\n\n* if `sell_by_days` is 0, sale is treated as indefinite\n* if `sell_by_days` \u003e 0, the sale will be valid for `sell_by_days` number of days\n\nNote that a sale will still need to be closed after expiration has passed. This can be done by\nanyone if the sale is expired by calling `closesalenft`.\n\n\n\nv1.1 - Time Based Minting\n----\n\nThe main feature added in v1.1 is the ability to mint tokens in a time limited fashion instead of\nsupply limited. To do this, one sets the available window time in days and sets `max_supply` to 0.\nThis enables tokens to be minted until the window has elapsed. Once the window has elapsed, or if\nthe contract owner wants to end it early the `freezemaxsup()` action may be called. This will set\nthe window time to 0 and the current supply will become the max supply, ensuring no more tokens may\nbe minted. To mint as before, just set `max_issue_days` to 0 in the `create` call. Alternatively,\none may set both a max issue time and max supply.\n\n* added time based minting\n* ensure dgood_id is unique even with tokens being burned (aka replace `available_primary_key()` )\n\nv1.0\n----\n\nMany changes have occured since v0.4 that made it into the 1.0 release. Some of these changes are\nnot backwards compatible since changes were made to multiple tables' structure. It is recommended to\nstart from a fresh contract rather than try and migrate data to the new version.\n\nWe have a [basic usage tutorial](example_usage.md)\n\nGeneral\n\n* general bug fixes / optimizations\n* removed custom dasset type in favor of standard asset type\n* removed inline actions in most places to comply with EOS 1.8 changes\n* `issue` function made batch\n\nAdded Features\n\n* add sellable flag\n* ex. transferable=false, sellable=true, can still trade; in fact becomes only way to effectively transfer item\n* add locking mechanism for use when selling and for future use in renting\n  - enables listing for sale while keeping item until sell occurs\n* enable configurable fee per token type used in sale\n  - enables an artist or creator to benefit from the resale market\n* `listsalenft` now batch as well\n  - can list multiple dgoods for sale as a batch\n\n\nv0.4\n----\n\n* update code to be compatible with CDT 1.6.1\n* add checks for invalid amounts\n* allow EOS to be sent without invoking `buynft` by setting memo to \"deposit\"\n\n\nv0.3beta\n--------\n\n* release of beta implementation\n\nDEX in a token (simple marketplace functionality)\n\n* listing tokens for sale is now built into the token itself\n* `listsalenft`: callable ownly by owner; creates a sale listing in the token contract valid\n  for 1 week, transfers ownership to token contract\n* `closesalenft`: callable by seller if listing hasn't expired, or anyone if the listing is expired;\n  will remove listing and return nft to seller\n* `buynft`: called when a user sends EOS to the dgood contract with a memo of \"dgood_id,to_account\"\n* the buy action allows a user (or marketplace) to buy on behalf of another user\n\nMetadata URI changes\n\n* `metadata_uri` is now formed from a `base_uri` +  either the `dgood_id` or `relative_uri` if it\n  exists\n* `create` now takes a `base_uri` string\n* `issue` has a `relative_uri` parameter, but it is now optional (enter empty string)\n* if no `relative_uri` is specified on a given token, the metadata should be accessed by taking\n  `base_uri` + `dgood_id`\n* if a `relative_uri` exists, the metadata is `base_uri` + `relative_uri`\n* this serves multiple purposes, but the most important is that it saves an immense amount of RAM\n  compared to the total cost of creating a single token\n* can still accommodate ipfs\n\nTable Changes\n\n* table names and table types now matchin abi making decoding easier from state history\n* some table names were changed to be more precise\n* `tokenstats` -\u003e `dgoodstats`\n* `tokeninfo` -\u003e `dgood`\n* `tokeninfo_id` -\u003e `dgood_id`\n\nMisc\n\n* replaced `_self` with `get_self()` for future proofing\n* actions dealing with fungible tokens now have `ft` appended (ex burn -\u003e burnft)\n* trim functionality implemented when parsing string\n* fungible tokens can be created with precision of 0 and no decimal place (ex 10)\n* precision mismatch assert will print what precision is required\n* logcall function logs the `dgood_id` during issuance to aid in matching transaction with action\n\n\nv0.2\n----\n\n* contract implementation shared with collaborating teams for feedback/security checks\n\nToken config\n\n* renamed `symbolinfo` table to `tokenconfigs`\n* added name of the standard (dgoods), version, and changed symbol type to symbol_code\n* added corresponding method called `setconfig` to set the symbol and version\n\nAsset / Quantities\n\n* introduce dasset type, similar to EOS asset but without unnecessary symbol\n* dasset has functionality to convert from string\n* all quantities are passed in as strings and converted to a dasset type\n* precision is set similar to EOS asset and all numbers are converted to uint64_t\n\nIssuance\n\n* `issue` now takes a metadata_type\n* `tokeninfo` table adds metadata_type onto the token instead of just in the metadata itself\n\nTransfer\n\n* fungible transfer parameters change to include category, token_name\n\nToken Stats Table\n\n* added `issued_supply` to keep track of `serial_number` when a token has been burned (ie `current_supply` is decreased but `issued_supply` never decreases)\n\nMetadata Templates\n\n* localization added\n* Instead of just json object, metadata is an array of json objects with a `lang` key that specifies the language\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkawk%2Fdgoods_provenance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkawk%2Fdgoods_provenance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkawk%2Fdgoods_provenance/lists"}