open-index/open-npm huggingface dataset:
npm package: @sandbox-smart-contracts/asset
Description: Asset and Catalyst L2 smart contracts
Latest version: 1.1.0

# <PACKAGE>

The Sandbox Asset package for deploying on Polygon, consisting of the below
contracts.

Asset (ERC1155) L2 token. Asset's user-facing contracts: AssetCreate,
AssetReveal. AuthSuperValidator. Catalyst (ERC1155) L2 token.

## Running the project locally

Install dependencies with `yarn`

Testing: Use `yarn test` inside `packages/<package>` to run tests locally inside
this package

For testing from root (with workspace feature) use:
`yarn workspace @sandbox-smart-contracts/<package> test`

Coverage: Run `yarn coverage`

Formatting: Run `yarn prettier` to check and `yarn prettier:fix` to fix
formatting errors

Linting: Run `yarn lint` to check and `yarn lint:fix` to fix static analysis
errors

## Deployment

This package exports the contract source code, for deployments see:
[@sandbox-smart-contract/deploy](../deploy) package.

## Dependencies

- [@openzeppelin/contracts](https://www.npmjs.com/package/@openzeppelin/contracts):
  OpenZeppelin Contracts is a library for secure smart contract development.
- [@openzeppelin/contracts-upgradeable](https://www.npmjs.com/package/@openzeppelin/contracts-upgradeable):
- [@sandbox-smart-contracts/dependency-metatx](https://www.npmjs.com/package/@sandbox-smart-contracts/dependency-metatx):
  ERC2771 Context
- [@sandbox-smart-contracts/dependency-royalty-management](https://www.npmjs.com/package/@sandbox-smart-contracts/dependency-royalty-management):
  Royalty Management
- [@sandbox-smart-contracts/dependency-operator-filter](https://www.npmjs.com/package/@sandbox-smart-contracts/dependency-operator-filter):
  Operator Filter
npm package: @sandbox-smart-contracts/giveaway
Description: Contracts used for token claims
Latest version: 1.0.0

# Signed Giveaways

This is a hardhat project, see [https://hardhat.org](https://hardhat.org)

The main contract gives rewards in any ERC20, ERC721 or ERC1155 when the backend authorize it via message signing.

The message is composed of:

- A list of signatures. If the contract holt too much value more than one signature is needed. Ideally the systems that
  sign must be independent.
- A list of claim ids used by the backend to avoid double spending.
- Expiration the expiration time of the message in unix timestamp. After the expiration the message cannot be used
  anymore.
- From: usually the rewards must be transferred to the contract and this value is address(this), if a strategy with
  approve and transfer is used this is the address of the source.
- To: the destination address that will get the rewards.
- Claims: A list of union structs (ClaimEntry) that include: token type (ERC20, ERC721, ERC1155, etc), token address and
  a data field that depending on the token type may have: amount, tokenId, etc.

# Usage

```shell
yarn hardhat help
yarn hardhat test
yarn hardhat coverage
REPORT_GAS=true yarn hardhat test
yarn hardhat markup
```

# Deployment

This package exports the contract source code, for deployments see: [@sandbox-smart-contract/deploy](../deploy) package.