{"id":20310224,"url":"https://github.com/bloq/sol-nft-wrap","last_synced_at":"2025-08-25T02:15:52.427Z","repository":{"id":54279931,"uuid":"297416390","full_name":"bloq/sol-nft-wrap","owner":"bloq","description":"NFT registry and account wrapper","archived":false,"fork":false,"pushed_at":"2021-02-27T02:03:05.000Z","size":410,"stargazers_count":27,"open_issues_count":1,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-10T01:38:38.853Z","etag":null,"topics":["erc20","erc20-tokens","erc721","ethereum","ethereum-contract","nft","solidity","solidity-contracts"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bloq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-21T17:45:08.000Z","updated_at":"2024-10-27T13:18:10.000Z","dependencies_parsed_at":"2022-08-13T10:50:36.426Z","dependency_job_id":null,"html_url":"https://github.com/bloq/sol-nft-wrap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bloq/sol-nft-wrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bloq%2Fsol-nft-wrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bloq%2Fsol-nft-wrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bloq%2Fsol-nft-wrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bloq%2Fsol-nft-wrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bloq","download_url":"https://codeload.github.com/bloq/sol-nft-wrap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bloq%2Fsol-nft-wrap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271998394,"owners_count":24856024,"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","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["erc20","erc20-tokens","erc721","ethereum","ethereum-contract","nft","solidity","solidity-contracts"],"created_at":"2024-11-14T17:30:41.122Z","updated_at":"2025-08-25T02:15:52.363Z","avatar_url":"https://github.com/bloq.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sol-nft-wrap\n\nThis set of smart contracts presents an account abstraction, and an ERC721 NFT as\nownership registry and transfer mechanism for abitrary contracts.\n\n## Components\n\n### C1:   Acct, an asset container\n\nAcct is a contract whose sole purpose is to hold assets, in order to\ntransfer those assets between owners, possibly including ownership\nby an NFT marketplace.\n\nAn Acct contract holds ERC20 tokens or ETH.  This on-chain account (aka\non-chain wallet) may be owned by\n\n1. An owner address (EOA or another contract), or\n2. The NFT ownership registry contract.\n\nTBD:  Holding NFTs.\n\n### C2:   OwnerRegistry, an ERC721 NFT registry for contracts\n\nOwnerRegistry is a standard ERC721 contract with 'OWNER' ticker symbol.\n\nThe Token-ID within this registry is the contract address of an Acct.\n\nOwnership of an Acct may be transferred to the registry.  The Acct\nmay then be transferred via ERC721 standard means.\n\nOwnership is transferred from the registry to the NFT owner by burning\nthe NFT.\n\n## Features\n\n### NFT Lock\n\nWhile an Acct is owned by the registry, assets cannot be withdrawn\nor transferred (unless prior approvals were granted).\n\n### Time Lock\n\nA non-revokable time lock can be applied to an Acct.  If the time lock's\ntimestamp is in the future, when withdrawals are disabled.  When the\ntimestamp is in the past, withdrawals are enabled.\n\n## User stories\n\n### Asset package and transfer\n\nAlice provably locks up assets in a smart contract, and registers the\ncontract with an ERC721-compatible registry.  Alice deposits the NFT\non an NFT marketplace.\n\nBob examines the NFT on the marketplace, and inspects the assets\nassociated with the NFT.\n\nBob purchases the NFT on the marketplace, ownership of the NFT\ntransfers to Bob.  Bob unlocked the Acct by burning the NFT.  Bob may\nthen immediately withdraw any or all of the assets.  Alice cannot\naccess the assets, following NFT ownership transfer to Bob.\n\n## Setup.\n1. Install packages\n   ```\n   npm i -g truffle\n   npm i\n   ```\n2. Update provider url in config/default.json\n3. Set DEPLOYMENT_ACCOUNT_KEY in env\n   ```\n   create a .env file in root\n   DEPLOYMENT_ACCOUNT_KEY =  \"my mnemonic phrase\"\n   ```\n4. Deploy you own contracts if want to do arb- \n   ``` \n   truffle migrate --reset --network mainnet/ropsten\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbloq%2Fsol-nft-wrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbloq%2Fsol-nft-wrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbloq%2Fsol-nft-wrap/lists"}