What is EndChain?

EndChain is a utility token that changes the way logistics are handled across industries in a cost-savvy way.

We own the process


How will it work?

EndChain aims to cover each sector of the supply chain, including the second hand market. Our product will be affordable, allowing even every day goods to be tracked on the blockchain. Additional functions for communications among the supply chain & allowing to set up subchains, further enhances the relevance of the product for the supply chain.

Simple to use

The EndChain QR code is unique in that it incorporates a barcode within the QR code. This design allows for simplified use as EndChain users will know to scan the only code found on the packaging. Other businesses which rely on legacy barcode technology will be able to scan the embedded barcode. Thus, EndChains QR code creates a singular code to work on any type of system. An additional benefit is that the single code can update both the blockchain and any internal legacy systems with a single scan. The goal of this is to reduce complexity while increasing efficiency.

Value creation

A blockchain company can only be as strong as its economy. EndChain is committed to both its corporate users and investors. To ensure that the needs of both are met, a deflationary self-regulating economy will be used. Corporations will be encouraged to buy and hold EndChain tokens in order to purchase QR codes, make smart contracts and access the data stream.

A percentage of the fees associated with these functions will be 'burned' to reduce the number of tokens in existence. Shall the market value of EndChain stay the same, the price of individual tokens will rise.


A token needs a thriving marketplace to be successful. Tokens that are not being utilized serve no purpose to investors. Additionally, tokens that do not have a consistent steam of buyers creates unstable prices. This is why EndChain has focused on ensuring a lively market by engaging companies to purchase EndChain tokens. By using our tokens, companies can receive a discount on our qr codes, big data and smart contracts.

Who is interested in EndChain?

EndChain provides a complete and cost-effective logistics package that benefits all parties of the supply chain. While most utility tokens focus on high end goods, EndChain focuses on the low to middle market, an area that has been ignored for too long. EndChain is able to enter this market due to the ease and low price of our system compared to other utility tokens which focus on expensive NFC chips or manual entry.

How does this help EndChain buyers?

With a large base of potential customers, EndChain can immediately get to work selling our product. 2-4% of the revenue generated from sales will be dedicated to burning EndChain tokens. This will help decrease the number of EndChain tokens in the long term; thus increasing the price. As most companies need to plan ahead and budget, they are likely to buy and hold an amount of EndChain tokens. This will create strong support for the EndChain market.

Self-correcting System

Should the market for EndChain be depressed, more tokens will be needed to pay for each order. When more tokens are used, more will be burned; thus driving the price up until equilibrium is reached. As a result, its safer to hold EndChain for a long duration of time as there are protections against price decreases. Thus, EndChain will have a self-correcting system which allows for a stable economy.

ENCN Token

Upcoming Exchanges

The EndChain team combines a passion for logistics, finance and marketing and is committed to quickly listing its token on exchanges


ICO Ends in

Pre-ICO ends in

Round 2 is live: 50% bonus!

  • days
  • Hours
  • Minutes
  • Seconds
    • Round

    • Price

  • Pre-ICO Dec 1, 18 - Jan 31, 19
    • Round 1 (USD 1.5m)

    • USD 0.16 (50% bonus)

  • ICO Nov 1, 19 - Mar 31, 20
    • Round 2 (USD 3.0m)

      Round 3 (USD 3.5m)

      Round 4 (USD 3.5m)

      Round 5 (USD 3.5m)

    • USD 0.18 (35% bonus)

      USD 0.20 (20% bonus)

      USD 0.22 (10% bonus)

      USD 0.24 (5 raffles; 40,000 tokens each)

Soft Cap: USD 4.0m Hard Cap: USD 15.0m

Distribution of Tokens

Distribution of Tokens

Fund Distribution

Fund Distribution


  • November 2017

    Development of EndChain concept

  • February 2018

    Whitepaper v1 completed design process flow

  • June 2018

    Discussions with patent lawyers

  • August 2018

    First working version of the unique EndChain QR code/barcode

    Different versions being tested for efficiency

  • January 2019

    Finish Pre-ICO

    Token distribution following internal and external audit

  • December 2018

    Start Pre-ICO

  • October 2018

    Setting up ICO and reaching out to potential partners*

    Obtain patent pending status

  • September 2018

    Launch of www.EndChain.io

    Release of a finalized EndChain Whitepaper

  • 1Q19

    Develop beta smart contract library

    Basic KYC framework development

    Prepare strategic partners for early adoption

  • 2Q19

    Direct communications infrastructure

    Create API for easy use of our system

  • 3Q19

    Complete test platform for contracts

    Alpha-testing of Minimal Viable Prdoduct through existing app with leading partner

  • 4Q19

    Beta testing of the app, roll out beta to a more partners

    UI and UX improvements to app

    Token Crowdsale start 1 Nov 2019

  • 4Q20

    Big data analytics opens

    Further development and features to be announced

  • 3Q20

    Full version of app launch

  • 2Q20

    Improvements for fraud reporting and allocation

    Train AI to recognize patterns in fraud

  • 1Q20

    Discuss with beta testing users and update app based upon suggestions

    Improve app functionality and backend integration

    Token Crowdsale end 31 Mar 2020

Smart Contract Code

>_ Endchain Smart Contract Code

  1. Apragma solidity ^ 0.4.21;
  2. import "./SafeMath.sol";
  3. import "./StandardToken.sol";
  4. import "./Ownable.sol";
  5. import "./MintableToken.sol";
  6. import "./BurnableToken.sol";
  7. contract ENCNToken is MintableToken, BurnableToken{
  8. using SafeMath for uint256;
  9. string public name = "ENCN";
  10. string public symbol = "ENCN";
  11. uint8 constant public decimals = 18;
  12. uint256 constant public MAX_TOTAL_SUPPLY = 135576931 * (10 ** uint256(decimals));
  13. struct LockParams {
  14. uint256 TIME;
  15. uint256 AMOUNT;
  16. }
  17. mapping(address => LockParams[]) public holdAmounts;
  18. function isValidAddress(address _address) public view returns (bool) {
  19. return (_address != 0x0 && _address != address( 0 ) && _address != 0 && _address != address(this));
  20. }
  21. modifier validAddress(address _address) {
  22. require(isValidAddress(_address));
  23. _;
  24. }
  25. function mint(address _to, uint256 _amount) public validAddress(_to) onlyOwner canMint returns (bool) {
  26. if (totalSupply_.add(_amount) > MAX_TOTAL_SUPPLY) {
  27. return false;
  28. }
  29. return super.mint(_to, _amount);
  30. }
  31. function transfer(address _to, uint256 _value) public validAddress(_to) returns (bool){
  32. require(!isMinting || msg.sender == owner);
  33. require(checkAvailableAmount(msg.sender, _value));
  34. return super.transfer(_to, _value);
  35. }
  36. function transferFrom(address _from, address _to, uint256 _value) public validAddress(_to) returns (bool) {
  37. require(!isMinting || msg.sender == owner);
  38. require(checkAvailableAmount(_from, _value));
  39. return super.transferFrom(_from, _to, _value);
  40. }
  41. function setHoldAmount(address _address, uint256 _amount, uint256 _time) public onlyOwner {
  42. require(balanceOf(_address) >= _amount);
  43. LockParams memory lockdata;
  44. if (lockCountingFromTime == 0) {
  45. lockdata.TIME = _time;
  46. } else {
  47. lockdata.TIME = now.sub(lockCountingFromTime).add(_time);
  48. }
  49. lockdata.AMOUNT = _amount;
  50. holdAmounts[_address].push(lockdata);
  51. }
  52. function getTotalHoldAmount(address _address) public view returns(uint256) {
  53. uint256 totalHold = 0;
  54. LockParams[] storage locks = holdAmounts[_address];
  55. for (uint i = 0; i < locks.length; i++) {
  56. if (lockCountingFromTime == 0 || lockCountingFromTime.add(locks[i].TIME) >= now) {
  57. totalHold = totalHold.add(locks[i].AMOUNT);
  58. }
  59. }
  60. return totalHold;
  61. }
  62. function getAvailableBalance(address _address) public view returns(uint256) {
  63. return balanceOf(_address).sub(getTotalHoldAmount(_address));
  64. }
  65. function checkAvailableAmount(address _address, uint256 _amount) public view returns (bool) {
  66. return _amount <= getAvailableBalance(_address);
  67. }
  68. function removeHoldByAddress(address _address) public onlyOwner {
  69. delete holdAmounts[_address];
  70. }
  71. function removeHoldByAddressIndex(address _address, uint256 _index) public onlyOwner {
  72. delete holdAmounts[_address][_index];
  73. }
  74. function changeHoldByAddressIndex(address _address, uint256 _index, uint256 _amount, uint256 _time) public onlyOwner {
  75. if (_amount > 0) {
  76. holdAmounts[_address][_index].AMOUNT = _amount;
  77. }
  78. if (_time > 0) {
  79. if (lockCountingFromTime == 0) {
  80. holdAmounts[_address][_index].TIME = _time;
  81. } else {
  82. holdAmounts[_address][_index].TIME = now.sub(lockCountingFromTime).add(_time);
  83. }
  84. }
  85. }
  86. function burnMintFrom(address _from, uint256 _amount) public onlyOwner canMint{
  87. super._burn(_from, _amount);
  88. }
  89. function burnFrom(address from, uint256 value) public{
  90. require(!isMinting);
  91. require(checkAvailableAmount(from, value));
  92. super.burnFrom(from, value);
  93. }
  94. function burn(uint256 value) public{
  95. require(!isMinting);
  96. require(checkAvailableAmount(msg.sender, value));
  97. super.burn(value);
  98. }
  99. }


Do you fancy working with cutting edge technology like Blockchain?

Join us and make a revolution!

The blockchain development candidate will have at least 5 years experience with product development. Their main responsibility will be to implement and support a blockchain-based logistics network. Day to day work will revolve around analyzing requirements, designing blockchain technology around our business model, and eventually, building and launching EndChain's own chain.


  • You are passionate about crypto and blockchain technologies.
  • Proven history of writing clean and efficient code
  • Bachelor's Degree in Math, Computer Science, Engineering, or related discipline with a technology focus required; Master's Degree preferred
  • Formal understanding of Blockchain technology, how to develop decentralized application and experience with multiple consensus protocols e.g. Proof-of-work (PoW), Proof-of-stake (PoS).
  • Minimum of 5 years' experience with software processes and with defining schedules and managing resource dependencies
  • Experience with various languages, such as Java, JavaScript, C++, Angular, Node, Go
  • Experience with Ethereum, hyperledger and generalized blockchain
  • You have a strong desire to master the details of Blockchain / Ethererum internals

Please forward your resume to: support@endchain.io with the title "Senior Blockchain Developer- Endchain"

The Senior Java Engineer should be highly experienced with at least 5 years of experience with an energetic and positive attitude. The position will play a critical role in designing, implementing, and sustaining our EndChain app for corporate users. This includes functionality, integration with current systems and API creation.
  • You are passionate about crypto and blockchain technologies.
  • Proven history of writing clean and efficient code
  • Bachelor's Degree in Math, Computer Science, Engineering, or related discipline with a technology focus required; Master's Degree preferred
  • Knowledge of some of the following system technologies; Java EE 5, Java EE 6 , Spring Framework, LDAP, JQuery, AJAX, JSP, XML, JAXB, Hibernate, Javascript, JSTL, Oracle SQL, JasperReports, JUnit, Web Services JAX-WS,Struts, SAX, Maven
  • Knowledgeable about object-oriented concepts, design patterns and UML notation

Please forward your resume to: support@endchain.io with the title "Senior Java Engineer"

Patent Pending ID: 16104317