JSPM

  • Created
  • Published
  • Downloads 808
  • Score
    100M100P100Q115262F
  • License Apache-2.0

The reference implementation for universal profiles smart contracts

Package Exports

  • @lukso/lsp-smart-contracts
  • @lukso/lsp-smart-contracts/artifacts/Create2Factory.json
  • @lukso/lsp-smart-contracts/artifacts/LSP0ERC725Account.json
  • @lukso/lsp-smart-contracts/artifacts/LSP0ERC725AccountInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP11BasicSocialRecovery.json
  • @lukso/lsp-smart-contracts/artifacts/LSP11BasicSocialRecoveryInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP16UniversalFactory.json
  • @lukso/lsp-smart-contracts/artifacts/LSP1UniversalReceiverDelegateUP.json
  • @lukso/lsp-smart-contracts/artifacts/LSP1UniversalReceiverDelegateVault.json
  • @lukso/lsp-smart-contracts/artifacts/LSP4Compatibility.json
  • @lukso/lsp-smart-contracts/artifacts/LSP4DigitalAssetMetadata.json
  • @lukso/lsp-smart-contracts/artifacts/LSP4DigitalAssetMetadataInitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json
  • @lukso/lsp-smart-contracts/artifacts/LSP6KeyManagerInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CappedSupply.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CappedSupplyInitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CompatibleERC20.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CompatibleERC20InitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CompatibleERC20Mintable.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7CompatibleERC20MintableInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7DigitalAsset.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7DigitalAssetInitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7Mintable.json
  • @lukso/lsp-smart-contracts/artifacts/LSP7MintableInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CappedSupply.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CappedSupplyInitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CompatibleERC721.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CompatibleERC721InitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CompatibleERC721Mintable.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8CompatibleERC721MintableInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8IdentifiableDigitalAsset.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8IdentifiableDigitalAssetInitAbstract.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8Mintable.json
  • @lukso/lsp-smart-contracts/artifacts/LSP8MintableInit.json
  • @lukso/lsp-smart-contracts/artifacts/LSP9Vault.json
  • @lukso/lsp-smart-contracts/artifacts/LSP9VaultInit.json
  • @lukso/lsp-smart-contracts/artifacts/UniversalProfile.json
  • @lukso/lsp-smart-contracts/artifacts/UniversalProfileInit.json
  • @lukso/lsp-smart-contracts/artifacts/UniversalReceiverAddressStore.json
  • @lukso/lsp-smart-contracts/constants
  • @lukso/lsp-smart-contracts/constants.js

Readme

LSP Smart Contracts · npm version Coverage Status All Contributors

The smart contracts reference implementation of the LUKSO Standard Proposals (LSPs).

For more information see Documentation on docs.lukso.tech.

⚠️ This package is currently in early stages of development,
use for testing or experimentation purposes only.

Installation

npm

LSP smart contracts are available as a npm package.

npm install @lukso/lsp-smart-contracts

cloning the repository

Alternatively you can also clone the repository and install its dependencies to start using the smart contracts.

$ git clone https://github.com/lukso-network/lsp-smart-contracts.git
$ cd ./lsp-smart-contracts
$ npm install

Usage

in Javascript

You can use the contracts JSON ABI by importing them as follow:

import LSP0ERC725Account from "@lukso/lsp-smart-contracts/artifacts/LSP0ERC725Account.json";

const myContract = new web3.eth.Contract(
  LSP0ERC725Account.abi,
  "",
  defaultOptions
);

in Solidity

import "@lukso/lsp-smart-contracts/contracts/LSP0ERC725Account/LSP0ERC725Account.sol";

contract MyAccount is LSP0ERC725Account {
  constructor(address _newOwner) LSP0ERC725Account(_newOwner) {}
}

Deployment via hardhat

You can find more infos on how to deploy the contracts via hardhat in the DEPLOYMENT page.

Available Constants

The @lukso/lsp-smart-contracts npm package contains useful constants such as Interface IDs or ERC725Y Data Keys related to the LSP Standards. You can import and access them as follow:

import {
  INTERFACE_IDS,
  ERC1271,
  OPERATIONS,
  SupportedStandards,
  ERC725YDataKeys,
  PERMISSIONS,
  ALL_PERMISSIONS,
  Errors,
  EventSignatures,
} from "@lukso/lsp-smart-contracts";

Note: we also export it as @lukso/lsp-smart-contracts/constants or @lukso/lsp-smart-contracts/constants.js to keep it backward compatible.

It also includes constant values Array data keys to retrieve both the array length and for index access.

'LSP5ReceivedAssets[]': {
    length: '0x6460ee3c0aac563ccbf76d6e1d07bada78e3a9514e6382b736ed3f478ab7b90b',
    index: '0x6460ee3c0aac563ccbf76d6e1d07bada',
},

Audits

The following audits where conducted. All high-level issues were addressed, or were not deemed as critical.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Jean Cvllr
Jean Cvllr

💻
Yamen Merhi
Yamen Merhi

💻
Fabian Vogelsteller
Fabian Vogelsteller

💻
b00ste.lyx
b00ste.lyx

💻
Matthew Stevens
Matthew Stevens

💻
Reto Ryter
Reto Ryter

🔧 🚇
Callum Grindle
Callum Grindle

👀
Skima Harvey
Skima Harvey

💻
Jenea Vranceanu
Jenea Vranceanu

💻
Hugo Masclet
Hugo Masclet

👀 💻
Leondroid
Leondroid

👀
lucasmt
lucasmt

🐛
qian-hu
qian-hu

🛡️ 🐛
Magali Morin
Magali Morin

💻
Hugo Montenegro
Hugo Montenegro

📖
Volodymyr Lykhonis
Volodymyr Lykhonis

💻
Prosperity
Prosperity

📖
Michael Standen
Michael Standen

💻
Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!