Below I’ve shared an example SAFT legal agreement and a smart contract which can be used to lock up tokens.
What Is A SAFT?
A SAFT is a simple agreement for future tokens. It is used primarily for blockchain projects to sell tokens at an early stage to VC investors and funds. The benefit for developers is that they can raise funds prior to deploying the smart contracts for the project.
SAFT Example Contract
Here is a Google document you can create a copy of and edit for yourself:
https://docs.google.com/document/d/1RZi0oOnLDV0RX6n0HNTwd8R_qXuc5irB6W7seKFBhVI/edit?usp=sharing
(Note that you don’t need to request edit permission, just create a local copy and edit that)
PDF: https://jamesbachini.com/resources/SAFTTemplate.pdf
Word Document: https://jamesbachini.com/resources/SAFTTemplate.docx
HTML Version
SAFT: Simple Agreement For Future $tokenName Tokens
Between $companyName And $investorName
2022-10-27
1. STRUCTURE & TERMS
1.1 Deal Structure
Token Total Supply | 1,000,000,000 $tokenName |
Purchase Amount $tokenName | 50,000,000 $tokenName |
Purchase Price Per Token | $0.05 USD |
Purchase Value | $2,500,000 USD |
Percentage Allocation | 5% |
Vesting Schedule | 25% Released at TGE 25% Released 12 Months after TGE 25% Released 24 Months after TGE 25% Released 36 Months after TGE |
1.2 The Agreement
This agreement certifies that in exchange for the payment by the investor, the company hereby issues to the investor the right to the purchase amount of $tokenName tokens subject to the terms set forth in this document.
1.3 Terms Of Purchase
Payment will be accepted in full for the token purchase amount in USDC to address $walletAddress on Ethereum mainnet before 2022–11-27 00:00 UTC
2. DEFINITIONS
“SAFT” Simple agreement for future tokens is an instrument granting future rights to an Investor to receive an amount of Tokens in relation to their investment.
“Company” is the legal entity $companyName. Where there is no legal entity formed or the organization structure is based on a decentralized autonomous organization then the Company will be treated as a legal entity for the purposes of this agreement.
“Investor” is the legal entity $investorName, which may be a company or individual, providing funds in exchange for future Tokens.
“Token” is a digital asset in the form of an ERC20 standard fungible token. The token provides no ownership rights or voting rights unless otherwise stated and should in no circumstances be considered a security.
“Dissolution Event” means (a) a voluntary termination of operations by the Company in its sole discretion; (b) a general assignment for the benefit of the Company’s creditors; or (c) any other event of liquidation, dissolution or winding up of the Company, excluding change of ownership and control of the Company as well as initial public offering.
“SDN” Specially designated national and blocked person and/or blacklisted addresses on the FOMC sanctions list
“Subsequent Agreement” means any SAFT released by the Company following this SAFT for the future sale rounds of the Token in accordance with the principles and for the purposes of raising capital. This definition excludes: (a) Token issues in the scope of the internal distribution plan of the Company, such as development team incentives and other relevant events (b) Token issued to third party service providers or other persons connected and associated with the launch of the Network or, similarly, provision of goods and services to the Company; (c) Tokens issued in accordance with sponsored research, collaboration, licensing, development, partnerships and other applicable agreements; (d) any convertible securities issued by the Company; and (e) Tokens issued in connecting with mining activities of the Network and the Company initiated giveaways.
“Vesting Schedule” means the process of releasing the Token after a token lockup period where the tokens will not be transferable.
“TGE” Token generation event is the on-chain minting of tokens via the deployed smart contract.
3. TERMS OF SALE
3.1. Reservation of Rights
The Company reserves the rights to offer and sell the Token on different terms and in multiple rounds. The terms applicable to each round following this round may be amended so long as the token total supply is not exceeded.
3.2. Delivery of Investment
Upon entering into the agreement with the Company in accordance with the provisions of this SAFT, the Investor agrees and undertakes to transfer, at their discretion and in a good will, the Purchase Amount corresponding to the relevant amount of Token value and pursuant of this SAFT. By signing this SAFT, the Investor willingly agrees to be contractually bound by its terms as well as acknowledges their obligation to transfer the relevant amount of funds as the Purchase Amount upon delivery and execution of this SAFT and other applicable agreements with the Company.
3.3. Terms of Token Delivery
The relevant amount of Tokens shall be delivered to the Investor to their digital wallet in accordance with the details provided by the Investor. The Token shall be delivered to the Wallet under the Investor’s direct or indirect control that may not be delegated to any authorized or unauthorized third party, including the Investor’s representatives. The Investor undertakes to notify the Company of the details regarding their Wallet address to which the Token is to be transferred as soon as possible, but no later than within 5 calendar days since the conclusion of this SAFT. The Token shall be delivered to the indicated Wallet address of the Investor after the successful deployment of the smart contract, at the stage of the TGE the Token shall be delivered to the Investor in the full amount corresponding to the Token Purchase Amount.
3.4. Vesting Schedule
The Investor acknowledges and agrees that the availability of the Token for purchase and distribution is subject to restrictions imposed by this SAFT in accordance with the Vesting Schedule determined and defined by the Company in its full and sole discretion. The Vesting Schedule for the Token distribution shall commence from the date of the TGE and proceed in accordance with the terms laid out in section 1.1.
3.5. Termination
This SAFT and its provisions shall be deemed terminated if and when:
- The applicable amount of the Token is delivered to the Investor upon the successful evaluation and deployment of the token smart contract and after the Token Purchase Amount is received by the Company in full; or
- The payment of the Returned Investment; or
- The Company’s failure or inability to deploy the contract within the reasonable time period or conclude positive evaluation and assessment of the contract functionality and operability.
4. COMPANY REPRESENTATIONS
4.1. Corporate Entity
The Company is a corporation duly organized, validly existing and in good standing under the laws of the state of its incorporation, and has the power and authority to own, lease and operate its properties and carry on its business as now conducted.
4.2. Execution, delivery and performance
The execution, delivery and performance by the Company of the Token is within the power of the Company and, other than with respect to the actions to be taken when Tokens are to be issued to the Purchaser, has been duly authorized by all necessary actions on the part of the Company.
4.3. Legal Obligation
The Token constitutes a legal, valid and binding obligation of the Company, enforceable against the Company in accordance with its terms, except in an event of bankruptcy, insolvency or other relevant laws and regulations laying down the legal framework for the regulation of the economic solvency of creditors and principles of equity. The Company affirms and acknowledges that, to its knowledge, it has not been and is not in any violation of its current articles of incorporation or bylaws, nor has it been or is currently subject to any ongoing or pending litigation, investigation or legal proceedings; nor has it been or is currently in violation of any martial law or regulation that could potentially and reasonably result in a material damage to the company or its assets; nor has it been or is currently involved in any act concerning money laundering, terrorism financing, fraud or other financial crime.
4.4. Company Affirmation
The Company affirms and acknowledges that, to its knowledge, the Token has not been or is currently being used in connection with:
- Violations of any material laws and regulations applicable to the Company;
- Imposition of penalties on the Company and its assets;
- Suspension, forfeiture, or nonrenewal of any permit or license, including the operational ban on commencing economic activity of the Company;
- Promotion, sponsorship (including the acts of charity and donations), and payment of and to any natural or legal persons, the activities of which concern illegal forms of business activity, infringement of intellectual property rights, regulated and licensed goods and services, fraudulent and restricted financial services and schemes, as well as other unfair, misleading, aggressive, and unregulated goods and services in accordance with the relevant laws.
5. INVESTOR REPRESENTATIONS
5.1. Investor Agreement
In order to be deemed eligible for the purchase of the Company’s Tokens, the Investors agrees to and warrants that:
- The investor is an accredited or authorized investor in their jurisdiction. This agreement is not suitable for retail investors or the general public.
- The Investor has reached the legal age their your country of residence and therefore are legally capable of entering into this SAFT and be bound by its terms
- Entering into a binding agreement with the Company and being bound by the terms and provisions of this SAFT does not contradict or breach any other contractual terms by which the Investor is legally bound upon the commencement of this SAFT
- The Investor is not located and/or residing in any of the restricted locations and jurisdictions, including those subject to prohibitive regulations, international financial sanctions and economic restriction measures
- The Investor are not identified as an individual that is officially classified as a SDN, or is affiliated with companies, groups and entities classified as SDN, or otherwise represent such natural or legal person
In an event when the Investor is the legal entity, the Investor acknowledges and warrants, that:
- The organization is incorporated with all due diligence of the company formation and incorporation in the country of its legal location
- The organization conducts its activities in accordance with the applicable laws and regulations
- The representative of the company acting as a signee of this SAFT has been legally authorized to represent the organization and otherwise enter into legally binding agreements on its behalf
- The organization has not been associated with, affiliated with or otherwise identified as the SDN
- The organization does not represent nor conduct its business activities in fields concerning illegal forms of business activity, infringement of intellectual property rights, regulated and licensed goods and services, fraudulent and restricted financial services and schemes, as well as other unfair, misleading, aggressive, and unregulated goods and services in accordance with the relevant laws.
5.2. Not Financial Advice
The Investor further warrants that neither this SAFT nor the representatives made by the Company in any form shall be perceived as investment, financial, regulatory, tax or legal advice and that the Investor has sought any said advice at their own discretion and independently from the professionals with relevant qualifications and/ or licenses. Any decision in regards to the conclusion of this SAFT by the Investor is made without the aid of the relevant advisor shall be your own responsibility. Notwithstanding this provision, the Investor warrants that they have been provided an opportunity to inquire the Company on the subject of the Token offering and this SAFT and have received answers from the Company.
5.3. Investor Aware
The Investor acknowledges and warrants that they have obtained and possess sufficient knowledge in financial and business matters and that they are capable of evaluating risks of benefits associated with purchasing, selling, and dealing in virtual currencies, including tokens. The Investor further acknowledges the risk of investment in virtual currencies and that they have assessed their financial and circumstantial situation and considered whether the purchase of the Token is suitable for them. The Investor agrees that they are aware of the possibilities of total and irreversible loss of their financial assets and that recovering from such loss may be difficult or impossible.
5.4. 3rd Parties
The Investor reaffirms that they are purchasing the Token for their own account for investment, not as a nominee or agent, and not with a view to, or for resale in connection with, the distribution thereof, and the Investor has no present intention of selling, granting any participation in, or otherwise distributing the same.
6. DISCLAIMER OF WARRANTIES
The Token is provided to the Investor on a “as is” and “as available” basis, with no promises, representations and warranties given in regards to the said basis, whether express, implied or statutory. The Company does not give any warranties of title, merchantability, data accuracy, system integration, quiet enjoyment, fitness for a particular purpose and/or non-infringement. The Company does not make any promises, representations and warranties regarding smart contract security or safety of funds.
Any decision, act, or omission thereof undertaken by you shall be made on the basis of the Investor’s own assessment of relevance, timeliness, accuracy, adequacy, completeness, reliability and value of information, materials, views, opinions, projections or estimates provided to them by the Company. Subsequently, the Company shall hold no liability over any damage or loss arising directly or indirectly as a result of the Investor’s use of any information, materials, views, opinions, projections or estimates provided to them through the Company.
7. MISCELLANEOUS
7.1. Amendments
Provisions of this SAFT may be altered, amended or otherwise modified only upon the prior written consent of the Parties.
7.2. Receipt of Notices
The receipt of any notice concerning the subject of this SAFT shall be commenced only in writing from the correspondent email address of the respective Party indicated in this SAFT to the email of the other Party, on the same conditions.
7.3. Limitation of Representation
The Investor shall not be entitled to any right of representation of the Company, or to any voting and management rights in the Company. The Investor shall similarly not be entitled to any seat in the Company’s management board or acquisition or transfer of any title of ownership or share of the Company’s assets to them on the basis of their holding of the Token. Furthermore, the Investor shall not have any right to vote for the election of or removal of any board members of the Company or to receive notice of meetings or otherwise receive any corresponding rights thereof.
7.4. Assignment
Neither this SAFT nor the rights contained herein may be assigned, by operation of law or otherwise, by Investor without the prior written consent of the Company, which consent may be withheld, conditioned or delayed in the sole discretion of the Company.
7.5. Intellectual Property
The Company shall retain all intellectual property rights in regards to the Token and other materials presented in connection with the Company. Material and content protected by intellectual property rights cannot and shall not be licensed to the Investor or any third party under any implied license or in association with the Investor’s acquisition of the Token, unless specified otherwise.
7.6. Entire Agreement
This SAFT as well other applicable agreements concluded between the Company and the Investor in association with this SAFT shall comprise and be perceived as the entire agreement and shall therefore supersede and prevail over any perceptions, discussions and agreements.
7.7. Severability
In the event any one or more of the provisions of this instrument is for any reason held to be invalid, illegal or unenforceable, in whole or in part or in any respect, or in the event that any one or more of the provisions of this instrument operate or would prospectively operate to invalidate this instrument, then and in any such event, such provision(s) only will be deemed null and void and will not affect any other provision of this instrument and the remaining provisions of this instrument will remain operative and in full force and effect and will not be affected, prejudiced, or disturbed thereby.
SIGNATURES OF PARTIES
______________________________ Name: _____________________ Date: ________/____/____ $companyName | ______________________________ Name: _____________________ Date: ________/____/____ $investorName |
Token Lock Smart Contract
The full source code, unit tests and deployment script is at:
https://github.com/jamesbachini/SAFT-Simple-Agreement-For-Future-Tokens
In this contract we set the token contract address in the constructor.
A token holder can then approve spend of their tokens and call lock(address _beneficiary, uint _amount, uint _unlockTimestamp)
This will allocate the amount of tokens to the beneficiary but they wont be able to get them until the block.timestamp reaches a set date.
Timestamp = number of seconds since January 1st 1970. See unit tests for examples of how to calculate this.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.17;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract Saft {
address token;
struct LockDetails {
uint unlockTimestamp;
uint amount;
}
mapping (address => LockDetails[]) public vestedTokens;
mapping (address => uint) public claimed;
constructor (address _tokenContractAddress) {
token = _tokenContractAddress;
}
function lock(address _beneficiary, uint _amount, uint _unlockTimestamp) public {
require(vestedTokens[_beneficiary].length < 100, "Limit of 100 locks per address to avoid unbounded loop");
IERC20(token).transferFrom(msg.sender,address(this), _amount);
vestedTokens[_beneficiary].push(LockDetails(_unlockTimestamp,_amount));
}
function unlock(address _beneficiary) public {
uint amountAvailable;
for (uint i=0; i<vestedTokens[_beneficiary].length; i++) {
if (vestedTokens[_beneficiary][i].unlockTimestamp < block.timestamp) {
amountAvailable += vestedTokens[_beneficiary][i].amount;
}
}
uint claimable = amountAvailable - claimed[_beneficiary];
require(claimable > 0, "Nothing to claim");
claimed[_beneficiary] += claimable;
IERC20(token).transfer(_beneficiary, claimable);
}
}
There is also a more complicated investor unlock smart contract here:
https://jamesbachini.com/vc-unlock-smart-contract/
Conclusion
SAFT’s are a useful tool for early stage crypto projects. It allows founders to raise funds prior to deploying tokens via a agreement to supply the tokens at a later date. These tokens can be minted during the token generation event (TGE) and locked in a contract like the Saft.sol above.
I hope these examples are of interest. Please note that the smart contract code has not been security audited and the legal contract may not be suitable for all jurisdictions. It would be advisable to seek counsel from a legal advisor with expertise in your operating location.