The purpose of Sway Libraries is to contain libraries which users can import and use that are not part of the standard library.
There are several types of libraries that Sway Libs encompasses. These include libraries that provide convenience functions, Sway-Standards supporting libraries, data type libraries, security functionality libraries, and other tools valuable to blockchain development.
For implementation details on the libraries please see the Sway Libs Docs .
Asset Libraries are any libraries that use Native Assets on the Fuel Network.
The Asset Library provides helper functions for the SRC-20 , SRC-3 , and SRC-7 standards.
Access Control and Security Libraries are any libraries that are built and intended to provide additional safety when developing smart contracts.
The Ownership Library is used to apply restrictions on functions such that only a single user may call them.
The Admin Library is used to apply restrictions on functions such that only a select few users may call them like a whitelist.
The Pausable Library allows contracts to implement an emergency stop mechanism.
The Reentrancy Guard Library is used to detect and prevent reentrancy attacks.
Cryptography Libraries are any libraries that provided cryptographic functionality beyond what the std-lib provides.
The Bytecode Library is used for on-chain verification and computation of bytecode roots for contracts and predicates.
The Merkle Proof Library is used to verify Binary Merkle Trees computed off-chain.
Math Libraries are libraries which provide mathematic functions or number types that are outside of the std-lib's scope.
The Signed Integers Library is an interface to implement signed integers.
Data Structure Libraries are libraries which provide complex data structures which unlock additional functionality for Smart Contracts.
The Queue Library is a linear data structure that provides First-In-First-Out (FIFO) operations.
Upgradability Libraries are libraries which provide functions to implement contract upgrades.
The Upgradability Library provides functions that can be used to implement contract upgrades via simple upgradable proxies.