InvArch Pallet Library - IP Infrastructure for Substrate

Overview

InvArch-Pallet-Library

Intro

This repository should contains the Pallets used in the InvArch blockchain, and reviews their relationships and functions. At the current stage, the goal of creating this document and repository is centered around getting feedback while we continue to write the code and develop InvArch. This is a WIP.

What is InvArch?

  • InvArch is a next generation blockchain for intellectual property tokenization, development, & networking.
  • The InvArch platform provides utility for this new technology by allowing intellectual property tokens (IPTs) to be owned by a Decentralized Entrepreneurial Venture (DEV) contract and governed as a DAO using built-in fungible IP Ownership (IPO) tokens. These tokens may also be leverages by participants in a DEV to raise startup funds for their projects.
  • InvArch is built using Substrate/Rust.
  • Every member of the time has an honest belief that this project will help make the world better through increased economic decentralization and by helping to catalyze future innovations, it's a belief that motivates and inspires every one of us to see this project through.

Project Details

InvArch approaches ideas (IP) as a set of non-fungible components:

  • IP Set = Idea
  • IP Tokens = components of their idea.
  • An IP Set can have built-in IP Ownership tokens.
  • You can,list,sell,buy,transfer, and destroy an IP Set, but not individual IP Tokens, since they're only components.
  • A new IP set can be created (create) and new IPT can be minted (mint) and added to a Set.
  • Existing IPT can be burned (burn) or amended (amend).
  • Subsequently, an entire IP Set could be destroyed (destroy) as well, burning all of its contents.

Components

1. IP Protocol & Pallets

  • Pallet_ips - Provides basic functionality for creating and managing an IPSet. You can think of an IPSet as an idea, which is basically a collection of components (intellectual property tokens) that define and describe that idea.
  • Pallet_ipt - Provides basic functionality for creating and managing an IPToken. You can think of an IPToken as a component of an idea. For example, a business summary PDF file, or even a 3D rendering of a prototype mold. When combined and stored in an IPSet, that collection forms the foundation for an idea. The more detailed and/or comprehensive an IPSet is, the stronger the idea.
  • Pallet_ipo - Provides basic functionality for creating and managing a IPOwnership tokens. You can think of IPOwnership tokens as a form of fungible and fractionalized ownership that are built-in to every IPSet.

2. DEV Protocol & Pallets

  • Pallet_dev - Provides basic functionality for creating and managing a DEV(Decentralized Entrepreneurial Venture). You can think of a DEV as an agreement between multiple parties to come together as cofounders over a project in order to contribute towards an IPSet's actualization.
  • Pallet_dao - Provides basic functionality for creating and managing a DAO that helps govern a DEV. You can think of a DAO as a DEV's governance mechanism. It helps regulate the and ensure the integrity and prudence of participants within a DEV.
  • Pallet_worklog - Provides basic functionality for creating and managing a WorkLog within a DEV. You can think of a Worklog as a DEV's method of recording and storing milestone/deliverables progressions and completions.
  • Pallet_deliverables - Provides basic functionality for creating and managing a Deliverables distribution mechainism for IPOwnership throughout a DEV. You can think of Deliverables as a mechanism for automatically distributing IPOwnership tokens to participants in a DEV as milestones/deliverables are met and confirmed by its Worklog.
  • Pallet_listings - Provides basic functionality for creating and managing a Listing for a DEV's IPOwnership tokens. Listings allows for public listings of IPOwnership to be purchased by outside participants/investors.

See the other pages in:

Comments
  • Benchmarking for INV4 pallets

    Benchmarking for INV4 pallets

    • [x] mint IPF
    • [x] burn IPF
    • [x] create IPS
    • [x] destroy IPS
    • [x] append IPS
    • [x] remove IPS
    • [x] allow replica IPS
    • [x] disallow replica IPS
    • [x] create replica IPS
    • [x] mint IPT
    • [x] burn IPT
    • [x] operate multisig IPT
    • [x] vote multisig IPT
    • [x] withdraw vote multisig IPT
    • [x] create sub asset IPT
    • [x] set permission IPL
    • [x] set asset weight IPL
    opened by SHA888 5
  • IPT architecture doesn't define total issuance to get a threshold of

    IPT architecture doesn't define total issuance to get a threshold of

    In IPT we used to define execution threshold as total_issuance / threshold, but with the introduction of sub assets which can also vote, it's necessary to redefine where the total issuance comes from, the ups and downsides of each approach need to be evaluated. Some of the possible approaches include:

    • Just using the root IPT's issuance
    • Using the issuance of root IPT + all sub assets
    • Using only the issuance of all assets present in the multisig operation
    • Having a formula that uses the issuance of all assets but takes their weights in consideration
    enhancement INV4 
    opened by arrudagates 2
  • Percent in IPL is non-inclusive

    Percent in IPL is non-inclusive

    Pallet IPL uses Percent for execution threshold and voting weights, but Percent describes the range between 0 and 1 non-inclusive, meaning it's not possible to set those fields to 1 as the max for Percent is 99.

    bug enhancement INV4 
    opened by arrudagates 2
  • Refactor Dev Users field

    Refactor Dev Users field

    This PR will refactor the users field of the DEV, accommodating the allocation and role of that user. The PR is not complete yet, so it will be opened as a draft PR.

    opened by arrudagates 2
  • Fix benchmarking on INV4

    Fix benchmarking on INV4

    • [X] Fix benchmarking on pallet-ipl
    • [X] Fix benchmarking on pallet-ipf
    • [x] Fix benchmarking on pallet-ips
    • [x] Fix benchmarking on pallet-ipt

    and also merge development

    opened by S0raWasTaken 1
  • Fix IPS/IPT unit tests

    Fix IPS/IPT unit tests

    With the merge of Pallet IPL, IPT and IPS tests were disabled and need to be updated before they can be re-enabled, this issue tracks both their update and their re-enabling.

    INV4 test 
    opened by arrudagates 1
  • Call to withdraw vote from multisig

    Call to withdraw vote from multisig

    If you remove your vote from a multisig operation it returns what you paid for fees. If you are the creator of that multisig, and you withdraw it will cancel the whole multisig and return everyone's fees.

    enhancement INV4 
    opened by arrudagates 1
  • Add IP Staking Pallet

    Add IP Staking Pallet

    TODO:

    • [x] Cargo toml, README
    • [x] Config, Event, Error, Storage
    • [x] Function register
    • [x] Functions unregister
    • [x] Function bond-and-stake
    • [x] Function unbond-and-unstake
    • [x] Function withdraw_unbond
    • [x] Function claim
    • [x] Function force_new_era
    • [x] Functions owner_pre_approval and enable_owner_pre_approval
    • [x] Pallet's Implementation
    enhancement OCIF 
    opened by SHA888 1
  • SmartIP + refactor

    SmartIP + refactor

    This PR will add the custom multisig pallet and the SmartIP pallet, will also refactor the codebase to remove unnecessary crates and change IPT to IPF

    opened by arrudagates 1
  • IPT Tests + Amend Fixed

    IPT Tests + Amend Fixed

    This PR fixes the Amend function that was actually minting new IPTs instead of changing the original, it also fully implements unit tests for all functions. Closes #20

    bug 
    opened by arrudagates 1
  • Feat: Add get-balance function in ipo pallet

    Feat: Add get-balance function in ipo pallet

    • Add get free_balance, reserved_balance and account balance functions
    • [Need help] There's reducancy from get_balance function from storage in line #156. Should we just stick to the get_balance from storage?
    enhancement help wanted 
    opened by SHA888 1
  • INV4 v2

    INV4 v2

    This issue will keep track of progress towards the INV4 v2 implementation, along with discussions of the feature set and design decisions.

    • [ ] Replace voting logic with pallet-ranked_collective, while having the ranked-collective ranks and rank weight inputs come from INV4 itself, thus keeping the original logic of INV4 and only delegating the raw voting logic to ranked-collective as a better standardized API.
    • [ ] Refactor the voting weights to implement CurrencyToVote instead of raw Balance
    • [ ] Detach IPF and RMRK from INV4 and instead replace with a cusotm trait that requires the implementastion of all the necessary functions for NFTs on pallet-inv4, making INV4 a true generalized NFT wrapper where NFT pallets implement the INV4 trait in the runtime and plug into an enum also defined in the runtime
    • [ ] Implement a track system similar to pallet-referenda's so that we can customize parameters like amount of multisig calls allowed concurrently for each different subtoken
    • [ ] Research and implement an efficient system for fully customizable user provided call filters for each track, similar to the current permissions system, but with an extensive rule system. See https://github.com/InvArch/InvArch-Frames/discussions/186
    • [ ] Simplify IPS multisig fee system by removing the whole logic of distributing the call fee among voters and instead just take the fee from the multisig account by proceeding with the call naturally
    • [ ] Rethink origin types for a more flexible account representation, using XCM's Plurality junction seems to be a great way to represent calls made by the multisig, as we can have an implementation that always derives the same account while the plurality can still dynamically represent different things, like different groups within the same IP Set and even different voting ratios. This would eliminate a bunch of checks and also make multisigs extremely powerful, while also preparing them for XCM transactions.
    opened by arrudagates 0
  • Add mint and burn functions to ips

    Add mint and burn functions to ips

    With these functions an IPS should be able to mint an NFT (RMRK or IPF) and automatically appending it to the data field, and also should be able to burn an NFT, removing it from the data field.

    opened by arrudagates 0
  • Multisig burn() call doesn't remove deleted IPF from IPS

    Multisig burn() call doesn't remove deleted IPF from IPS

    Basically when you use the operateMultisig to burn an IPF that is owned and appended to that IPS, it burns the IPF, but doesn't remove it from the IPS. On the very bottom is the IPF I just burned (IpfId 0), but you can see that the IPS still thinks it has IPF 0. Seems to me that this should be in sync. If the multisig votes to burn an IPF, then the IPS shouldn't show it still has the file as the hash has been deleted from the chain. That just doesn't make sense I think

    image

    bug 
    opened by jakerumbles 0
  • Rework multisig fee system

    Rework multisig fee system

    As it currently stands, the ipt multisig fee system works by calculating how much the operator or voter should contribute for the fee and then tries to make a balance transfer from the caller account to the multisig account, in preparation for the multisig account to then be the executor of the multisig operation and pay the fee with it's transferred balance. This is not the optimal solution as it depends on an internal extrinsic that can fail. The proposed solution takes note of how Parity's multisig pallet handles fees, but first let's go through the formula we use to determine how much an operator/voter should pay, as that's not going to change.

    IPT 0 has total supply of 10 tokens
    
    Alice has 3 tokens
    Bob has 3 tokens
    Charlie has 4 tokens
    
    They want to execute a multisig operation where the call to be executed has a fee of 10 varch
    
    Let's consider this IPT has been set up to execute calls once the multisig reaches 50% of the ipt supply in votes. Meaning none of the 3 owners can execute a call alone.
    
    So to find out how much they will each pay in fees we first have to calculate the relation between ipt and varch for this situation, we can do so with a simple formula of (fee / (execution threshold * total supply)), or in our case: (10 / (0.5 * 10)) = 2.
    Then, knowing how much each ipt translates in the transaction fee, we can simply multiply that by the operator/voter's ipt amount. For example:
    Alice + Charlie = 7 tokens. Alice initiates the operation, contributing 3 (ipt) * 2 (fee multiplier) = 6 varch for the multisig. Then Charlie comes along and since there's already 3 ipt in the operation, charlie only needs to vote with 2 of his 4, so he contributes 2 (ipt) * 2 (fee multiplier) = 4 varch. 
    This completes the 10 varch needed for the operation!
    

    It's a simple system and it works perfectly, so that won't need to change, however we need to rework the way we deposit the fee and the best approach is to calculate that fee alongside the extrinsic weight of the operate/vote calls, that way this gets deposited as a normal fee and we utilize native substrate fee/weight systems!

    opened by arrudagates 0
Owner
InvArch
InvArch
Minimal Substrate node configured for smart contracts via pallet-contracts.

substrate-contracts-node This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract modu

Parity Technologies 73 Dec 30, 2022
Substrate Pallet for chaotic experimentations

Chaos Pallet The Chaos module is used to inject chaos into a Substrate Runtime and intentionally break things. Overview The Chaos module provides func

Bernardo A. Rodrigues 2 Apr 7, 2022
Faterium Substrate Node, Runtime, and Pallets. Contains "faterium-polls-pallet" with logic of Faterium Polls.

Faterium Substrate Node Faterium - a place where fates are forged. This is the official implementation of Faterium Crowdfunding Polls in Rust as Subst

Faterium 3 Dec 15, 2022
Official Repository for the InvArch platform.

InvArch The Future of Innovation The world’s first intellectual property tokenization & networking platform. Official Repository for the InvArch platf

InvArch 29 Jan 4, 2023
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

HoangDuong 1 Oct 19, 2021
Substrate blockchain generated with Substrate Startkit

Substrate Node Template A new FRAME-based Substrate node, ready for hacking ?? Getting Started This project contains some configuration files to help

Liam Parry 0 Nov 6, 2021
The implementation of the chain extension for `pallet-assets`

Pallet assets chain extension ⚠️ Chain extension contains vulnerabilities: Don't use it in the production. Fixing vulnerabilities requires changes on

Supercolony 2 Aug 22, 2022
A specialized blockchain for testing use cases with the FRAME NFTs Pallet.

Substrate NFTs Node The Substrate NFTs node is a specialized blockchain for testing use cases with the FRAME NFTs Pallet. ?? The purpose of this node

Sacha Lansky 4 May 25, 2023
An infrastructure for peer-to-peer, decentralized, and collaborative software.

karyon An infrastructure for peer-to-peer, decentralized, and collaborative software. In molecular biology, a Karyon is essentially "a part of the cel

karyons 14 Dec 2, 2023
Substrate: The platform for blockchain innovators

Substrate · Substrate is a next-generation framework for blockchain innovation ?? . Trying it out Simply go to substrate.dev and follow the installati

Parity Technologies 7.7k Dec 30, 2022
Basilisk node - cross-chain liquidity protocol built on Substrate

Basilisk node Local Development Follow these steps to prepare a local Substrate development environment ??️ Simple Setup Install all the required depe

Galactic Council 52 Dec 27, 2022
Substrate Node for Anmol Network

Anmol Substrate Node ?? ??️ ?? Anmol is the First Cross-Chain NFT Toolkit, on Polkadot. Introducing: Moulds NFT Breeding Multi-Chain NFT Migration ink

Anmol Network 12 Aug 28, 2022
Substrate NFT !ink smart contract base

Substrate !ink NFT simple implementation This is a simple working version of base NFT smart contract written using latest (as of this date) !ink 3.0.0

POLK4.NET 14 Dec 3, 2022
Filecoin to substrate bridge

filecoindot A Substrate pallet to bridge from Filecoin to any blockchain built using the Substrate framework, including Polkadot parachains. How to in

ChainSafe 23 Nov 23, 2022
Substrate Node Template Generator

Substrate Node Template Generator A tool to generate stand-alone node templates of a customized Substrate clients used in "Substrate Library Extension

Parity Technologies 2 Feb 11, 2022
Subsocial full node with Substrate/Polkadot pallets for decentralized communities: blogs, posts, comments, likes, reputation.

Subsocial Node by DappForce Subsocial is a set of Substrate pallets with web UI that allows anyone to launch their own decentralized censorship-resist

DappForce 74 Nov 24, 2022
An Ethereum compatible Substrate blockchain for bounties and governance for the Devcash community.

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

null 4 Mar 30, 2022
Node implementation for aleph blockchain built with Substrate framework

This repository contains the Rust implementation of Aleph Zero blockchain node based on the Substrate framework. Aleph Zero is an open-source layer 1

Aleph Zero Foundation 55 Dec 15, 2022