npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@aktionariat/contracts

v1.0.8

Published

Aktionariat Smart Contracts

Downloads

19

Readme

Aktionariat Contracts

The public repository for all smart contracts used by Aktionariat.

Overview

There are four notable smart contracts in this repository:

  1. Our custom Multisignature Contract, providing the basis for corporate accounts with multiple signers.
  2. The ERC20Claimable Contract, implementing our decentralized claim mechanism for lost tokens.
  3. The ERC20Draggable Contract, implementing the drag-along clause found in many shareholder agreements.
  4. The Automaton Contract, providing mechanisms for the selling and repurchasing of shares with automated price adjustments.

Full User Control

Generally, there are two approaches to add functionality to basic ERC20 tokens. A commonly used bad one and the better one we are trying to follow.

The first approach is what we call the "cat-in-the-bag" approach. This is followed by most issuers of non-trivial ERC20 tokens and allows them to arbitrarily change the functionality of the token at a later point in time. Under this approach, the users are only interacting with a thin interface that in the background redirects all request to other smart contracts configurable by the issuer. That way, the issuer can arbitrarily update the contract, freeze tokens or even take them into their possession. This not only goes against the spirit of decentralized finance, but also against the recommendations of the Swiss Blockchain Federation and potentially also against the upcoming legal requirements for security tokens.

We believe in a modular approach in which functionality is added by composition, thereby providing much stronger property rights to the token holders. Under the modular approach, a basic ERC20 token with minimal functionality is issued first. In our case, this base token is reflected by the smart contract simply named Shares. It is designed to (hopefully) last for as long as the Ethereum network exists. New featues are added not by changing the base token, but by wrapping them into tokens with additional functionality. For example, all ServiceHunter AG Shares (SHS) in circulation have been wrapped by Draggable ServiceHunter AG Shares (DSHS) token before selling them. Once the drag-along clause get triggered in an acquisition of if the majority of token holders vote to terminate the shareholder agreement, holders of DSHS token can unwrap them to convert them back to SHS tokens, which then could be wrapped into a new contract representing a new shareholder agreement. Under the modular approach, updates of the functionality of a token require the consent of the token holders, thereby ensuring that they actually possess what they own.

Issuance

  1. The ERC20 equity contract Shares is deployed with the desired parameters. This contract supports claims as it inherits from ERC20Claimable. A currency token such as XCHF can be set as a custom collateral. The issuer is the owner of this contract.
  2. The ERC20 draggable contract DraggableShares is deployed. This contract does not have an owner and could in principle be deployed by anyone. It is controlled by the token holders by majority vote.
  3. To issue basic shares, the 'mint' function can be calles on the shares contract. Holders can convert base shares at any time into draggable shares by sending them to the draggable contract or calling the 'wrap' function. Alternatively, it is also possible to directly mint wrapped shares with the 'mintAndCall' function, enabling the issuer to mint, wrap and transfer shares directly to the right owner in one transaction.

Shareholder Registry

Companies that choose Aktionariat as tokenization provider get access to a corporate dashboard on which board members can issue multisignature transaction to configure their smart contract. Furthermore, they get access to an electronic shareholder registry that shows which shareholder holds how many shares and that is automatically updated to reflect all blockchain-based token transfers. All personal data is stored in our database and not on the blockchain. In order to become a registered shareholer, token holders must provide their name and address and prove ownership of their tokens, which can be done through a widget on the issuer's website or our app.

This approach reflects how paper certificates are handled, with the paper corresponding to the tokens. Owners of certificated shares are free to hand them over to anyone at any time, but to actually enjoy any shareholder rights, the new owner must register themselves with the company. This enables short-term trading of the token without registration, while at the same time provides a strong incentive for long-term shareholders to actually register themselves in the shareholder registry.

This approach corresponds to the recommendations of the Swiss Blockchain Federation.

Numbered Shares

As far as we know, we are the only share tokenization service that supports numbered shares. Many Swiss companies number their shares so they can be individually identified. When issuing numbered shares, the 'mintNumbered' function must be used, which lets the smart contract emit a public event to signal the numbers of the newly minted tokens. The numbers are not tracked on-chain, but by our server according to the FIFO (first in, first out) principle and automatically recflected in the shareholder registry.

Bug Bounty

If you find a new security-relevant bug in our contracts and tell us, we will reward you with 1 Ether. For bugs that could lead to a loss of funds, the bounty is tripled. The bounty can only be claimed for bugs that we are not aware of and that have not been exploited yet. They must be filed directly to [email protected] without opening a publicly visible issue.

License

All our smart contracts are open-source and can be used under a slightly modified MIT License with Automated License Fee Payments. This means that you are free to use our contracts as long as you do not make any changes to circumvent the built-in license fee payments to our address 0x29Fe8914e76da5cE2d90De98a64d0055f199d06D, if there are any. Note that some of the source code you find in this repository stems from other sources with other licenses. These are marked accordingly.