Skip to content
This is the official public repository for Shopin to open-source code and release public documents.
JavaScript CSS HTML Shell Dockerfile
Branch: master
Clone or download
Latest commit 80eb9c6 Nov 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
@deadcanaries update 0.3 Nov 18, 2019
@kadenceproject update 0.3 Nov 18, 2019
Examples of Reports from Retail Intelligence Data Engine and ShopScore Initial commit Oct 30, 2019
Legal Documents Initial commit Oct 30, 2019
Pitchdeck Initial commit Oct 30, 2019
Testimonials from retailers Initial commit Oct 30, 2019
Videos Initial commit Oct 30, 2019
node_modules update 0.2 Nov 12, 2019
src update 0.3 Nov 18, 2019
.DS_Store update 0.3 Nov 18, 2019
Dockerfile update 0.3 Nov 18, 2019
DockerfileDev update 0.3 Nov 18, 2019
LICENSE add license Nov 13, 2019 Update 0.3 commit Nov 18, 2019
Shopin DLT yellow paper V1.pdf
Shopin Whitepaper 4 - decentralizing retail and purchase data (web).pdf
docker-compose.yaml update 0.3 Nov 18, 2019
index.js update 0.3 Nov 18, 2019
ip.txt update 0.2 Nov 12, 2019
package.json update 0.3 Nov 18, 2019


An approach to create a new layer of decentralized infrastructure that provides value to retailers by assigning consumers ownership of their data.

Shopin link:

Whitepaper link:

ShopChain DLT (ShopChain beta): a federated, staked consortium

ShopChain DLT (Distributed Ledger Technology) is a permissioned, federated network consortium with superior throughput and security, consisting of known staked participants.

ShopChain DLT uses a ground-breaking architecture combining DHT (Distributed Hash Tables, and consensus nodes (

Among other innovations, ShopChain DLT leverages BLS signatures to achieve throughput beyond Bitcoin and Ethereum. The BLS signature is an implementation of a digital signature scheme ideated by Boneh, Lynn and Shacham (2001, BLS signatures have efficient computability and non-degeneracy, which means they are easy to use and difficult to tamper with, therefore secure.

In order for this process to be carried out, nodes engage in a Distributed Key Generation (DKG) process, a mechanism for validating participating nodes (

Update 0.1 (initial commit): Kadence library implementation with initial nodes

  • Added kadence library
  • Created Kademlia node using kadence library
  • Connected two nodes via Join method
  • Added express server to create an API
  • Put a static primary node's contact in the config file
  • Stored a list of static wallets using the IteractiveStore method of kadence
  • Created an API to get wallets stored on node
  • Added Eth-Crypto library to generate identity and addresses
  • Added custom plugin called sendNeighborEcho
  • New coming node in network will send Echo message to first (primary node)
  • First node will store the contact of incoming node to its routing table

Update 0.2: Procedure to onboard new nodes and to read IP addresses dynamically

  • Added a CONTACT_LIST remote procedure call (RPC) method
  • New node procedures:
    • When a new node pings a primary node, the primary node sends the list of contacts in its routing table
    • The new node stores the list of contacts to its routing table so that it has the latest nodes of the network
    • The new node will not save its own contact to routing table
  • Improvements to the routing table file inside the kadence library to optimize the hops per lookup
  • Implemented changes in allBuckets() method of the routing table component to refresh a wider pool of nodes
  • When nodes are connecting, the list of contacts is added to the routing table
  • If a CONTACT_LIST is sent to a primary node, the node will store it in its routing table, and if the CONTACT_LIST is sent to a non-primary node, the node will then just print it in console
  • Upgraded the static local IP address by adding the command "hostname -i > ip.txt" in order to store the private IP of the machine to the ip.txt file, thus the private IP is read dynamically from the file

Update 0.3: Initial multi-node communication with docker container for nodes

  • Changed file structure
  • Added support for websocket
  • Changed the API so that a single controller can be used in both the API and the socket
  • Created a dockerfile
  • Added support to run application via the docker container
  • Enhanced the dockerfile to build a container so a node can be run out in a docker container
  • Added docker-compose.yaml
  • Created 6 nodes using the docker-compose file and achieved communication among the nodes

Update 0.4: (coming soon)

You can’t perform that action at this time.