Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform Post by: paul.lee.attorney on January 25, 2024, 04:04:21 PM System Overview
ComBoox is a blockchain-based company book-entry system designed for equity share registration and statutory books keeping, which is aimed to assist users to quickly establish a legal, secure, transparent, and reliable smart contracts system on blockchain for registering equity share and keeping records of corporate governance, so as to enable rights holders such as investors, shareholders, managers, and business partners be able to directly engage in almost all the share transactions and corporate governance activities under the automatically control of smart contracts, including share subscription, transfer, pledge, consideration payment, contracts signing, motion submission, voting, nomination, appointment, resignation etc. Different from simple tokenization of equity certificates, ComBoox does NOT rely on legal documents to restrict off-chain behaviors to ensure the realization of rights and interests, instead, it fully takes over equity transactions and corporate governance activities through smart contracts, completely eliminating the possibility of defaults. So that, it may fundamentally solve the corporate governance problems such as "Insider Control" and "Misleading Statements" that have plagued the capital market for many years, and completely realize: (1) right holders may directly exercise rights; (2) obligor has no chance to default; and (3) real-time information disclosure. By booking equity shares on Blockchain, investors may use cryptocurrency or Central Bank Digital Currencies to pay for share consideration, which means effectively connecting the company's equity share to the trillion-dollar crypto-markets, so that the companies may have an opportunity to have their value reevaluated and reconfirmed with the robust support of the huge liquidity. Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (2) Post by: paul.lee.attorney on January 26, 2024, 11:51:02 AM 1.1. “Pain Points” of Corporate Governance
The capital markets have long been suffered from some "pain points" of corporate governance, which can be summarized into following three aspects: (1) Right holders can hardly exercise their rights smoothly No matter it is to replace executive managers, to change accounting policies, to convene an extraordinary shareholders' meeting, or to enforce a Put Option, Drag-Along, or Anti-Dilution of the shareholders agreement, when exercising its shareholders rights, investors will often inevitably need the cooperation of other parties like company secretary, actual controller, executives, registration agents and even the official registration offices. Sometimes, this could be very difficult and challenging, not only time-consuming and costly, but also may change into a protracted shareholders’ disputes, even lead to a serious consequences like business shutdown. (2)Obligors sometimes deliberately violate their obligations During an equity share transaction, buyer may delay paying of the consideration, whereas, seller may maliciously retain the company's seal, license, or postpone the closing process; In a company's daily operation, managers may abuse their authority, actual controller may misappropriate operational funds... To sum up, all of such bad behaviors can be categorized as "acts of breach", either breaching a share transaction contract (such as share subscription agreement or share transfer agreement), or violating a constitutional document of the company (e.g. the articles of association, bylaws, shareholders agreement, or operational agreement). (3)Untimely and inaccurate information disclosure Transfer of control rights, private placements, acquiring material voting shares exceeding reporting threshold ratio, such significant changes of shareholding structure of a company, as well as the company’s governance records like shareholders meeting resolutions or board meeting minutes etc., all these information are crucial indicators for assessing a company's future strategy, profitability, and valuation of equity shares, and will directly influence the investment decisions of investors and the valuation of the company concerned. Untimely, inaccurate or incomplete information disclosure often becomes major reasons that caused shareholders disputes or securities transaction disputes. Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (3) Post by: paul.lee.attorney on January 26, 2024, 04:24:03 PM 1.2.Blockchain Solution
The emergence of blockchain and smart contract technology presents a good opportunity to solve the above mentioned problems. If using blockchain to book equity shares, and using smart contracts to define and automatically control share transactions and corporate governance activities, then, the potential human influences can be excluded to an extreme extent, so as to realize: (1) Rights holders directly exercise their rights Rights holders may, by means of electronic signature technology, have their identities verified and send out their instruction calls of exercising rights, by triggering the specific API of smart contracts to call the relevant functions and methods, directly update the Register of Shares, Meeting Minutes, and other Book-Entry records in accordance with the predefined conditions and procedures, thereby achieves the desired legal consequences accordingly. Throughout this process, there is no need to seek assistance or engagement of secretary, agent, authority or any third party, to exercise rights as a representative, proxy or delegate, so that the actions of exercising rights will not be intervened or controlled by any third party. (2) Obligors have no opportunities to default The reason why defaults occurred is because the realization of contractual rights depends on obligors to make cooperation behaviors actively. When turning over the control rights of book-entry records like Register of Shares and Meeting Minutes to smart contracts for automatic operation, then, a lot of traditional “claim rights” requiring cooperation of obligors will be changed into "disposal rights" that can be unilaterally exercised by right holder, therefore, the possibility of defaults will be completely eliminated. As for the constitutional documents like articles of association, bylaws or shareholders agreement, many defaults are actually Ultra Vires behaviors (either substantive or procedural) of the controlling shareholder or executive managers. Smart contracts have rigid and strict programming logic, and can precisely control the timeline, permissions, procedures and other conditions of business operations, which may fundamentally eliminates the said Ultra Vires challenges to corporate governance. (3) Real-time information disclosure Corporate governance behaviors can generally be categorized as signing documents, voting, paying consideration, nominating candidates, taking position, resigning and several other types, and the existing technologies are fully capable to implement all of these legal actions that takes "Expressing Intent" or "Updating Rights and Interests" as its core attributes on blockchain, i.e. using blockchain to book the digital tracks of these legal behaviors, and using smart contracts to automatically verify identity of the actors, determine the conditions precedent, and control the process and procedures. Blockchain is a distributed system that synchronize information in real-time among the nodes, therefore, legal behaviors conducted on blockchain will complete the information disclosure at the same time when updating the book-entry records or realizing the legal consequences concerned. Legal behavior and information disclosure are not separate activities any more, which will be integrated together and have no time lag or contents differences. Therefore, current disclosure issues like untimely delay, misrepresentation, or misleading statements etc. should become impossible to occur. Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (4) Post by: paul.lee.attorney on January 28, 2024, 05:40:05 PM 1.3. Tokenization and Company Evaluation
Equity share is a typical kind of book-entry interests, and also an important trading object of capital markets. (1) IPO creates capital premium A company may select to list its shares on an open market, so as to facilitate public investors to buy in and sell out its equity more conveniently, which means to release the liquidity of its equity greatly, and as a direct consequence, the equity value of the company or its stock price will usually increase within a very short period of time dramatically. This is the basic principle that IPO can create capital premium. (2) Tokenization of Equity Shares Similarly, if adopting blockchain to book companies' equity, it will become very convenient to use cryptocurrencies or Central Bank Digital Currencies to pay the equity consideration, and, under the automatic control of smart contracts, some concepts like "Delivery Versus Payment", "Payment as Settlement" and "No Clearing Transfer" etc. can be fully realized with a fairly low cost and much higher efficiency. This is equivalent to connecting the companies' equity to the crypto markets which have trillion dollars’ liquidity, so that the companies may have an opportunity to have their equity re-evaluated and re-confirmed with the robust support of the huge liquidity. (3) Web 3.0 Capital Markets However, tokenization of equity shares does not simply mean to define a structured digital object representing equity value or capital contribution, or to move the booking records of “Register of Shareholders” or "Register of Members" onto the blockchain. What's more important is to coordinate all facts that may influence the equity value of a company into the automatic system of blockchain, and to enable smart contracts to get full control over all activities of share transaction and corporate governance, so as to ensure all those legal behaviors can be carried out strictly in line with the internal governance rules (like the articles of association or bylaws), as well as the external governing laws and regulations (such as the Securities Act and the Securities Exchange Act). So that, the capital markets can rely on the rigid logic of smart contracts to automatically control the creation, change, exercising, and elimination of the equity rights of shareholders, i.e. by implementing the concept of "Code Is Law" to establish a decentralized and trustless “Web3.0 Capital Market” in real sense. Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (5) Post by: paul.lee.attorney on January 29, 2024, 02:12:49 AM 1.4. Features and Advantages
To accommodate different demands, ComBoox adheres to the concept of "dynamic configuration and plug-and-play" to maintain the flexibility and scalability of its smart contract system. Specifically:
Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (6) Post by: paul.lee.attorney on January 29, 2024, 06:02:04 AM 2.Computational Control Model
ComBoox adopts the "state machine model" to simulate and control the share transactions and corporate governance activities, specifically: 2.1.State Information contents of the book-entry registers at each moment are deemed as different states, which will be stored in the smart contracts of Registers (such as Register of Shares, Register of Members and Meeting Minutes etc.). 2.2.Transition Process Share transactions, corporate governance behaviors and other relevant legal actions are considered as the transition process between different states of the book-entry Registers, and which will be defined and controlled by the smart contracts of Bookkeepers with respect to the subject’s identity, action process, terms and conditions, as well as legal consequences thereof. https://i.ibb.co/WWkXF39/States-Transition.png 2.3.Conditions and process The corporate governance rules (such as voting rules, nomination rules and other rules stipulated in the bylaws or other similar company constitutional documents), as well as the shareholders' special rights (such as First Refusal, Tag-Along and Drag Along, Anti-Dilution, Put Option and Call Option etc.) are deemed as rules, conditions and procedures to be followed in the transition process between the different states, which will be defined by the smart contract of Shareholders Agreement with respect to values of attributes, duration or determination thresholds for the said rules or rights. In runtime, Shareholders Agreement will timely answer the queries sent from Bookkeepers so as to provide parameters to automatically control the execution process of the legal behaviors concerned. 2.4.Write Operation Scripts Investment Agreement can be deemed as a special script or batch file consisting of a series of write operation commands to cause the states transition of Register of Shares. And, the transaction factors defined in Investment Agreement as attributes of object Deal (such as subject equity, parties concerned, quantities and price etc.) can be deemed as input parameters (or specific trigger events) of the said write operations concerned, which will be executed by the relevant Bookkeepers automatically. Data Structure of Deal Code: struct Head { Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (6) Post by: paul.lee.attorney on January 29, 2024, 10:04:35 AM 3. System Architecture
ComBoox consists of four major types of smart contracts: Registers, Bookkeepers, Shareholders Agreements and Investment Agreements. https://i.ibb.co/BKwnzND/Sys-Architecture.png 3.1.Registers Registers defined registration books to record the various book-entry interests (such as equities, pledges, options) or corporate governance documents (such as general meeting minutes and board meeting minutes). The core functions of which are to define the attributes composition of various bookkeeping objects, and the data structure, parameter and logical verification algorithm thereof, as well as the basic methods and APIs for adding, deleting, modifying and querying these objects. 3.1.1.Functions of Registers When users exercise their rights: (1) In accordance with the calling commands sent or routed from Bookkeepers, Registers will retrieve and provide specific states of book-entry interests or historical records of legal behaviors; (2) Based on the above feedback, Bookkeepers will verify or determine whether the conditions for exercising certain rights are fulfilled, or calculates values of the relevant parameters concerned; and (3) Bookkeepers will call specific Register to update the states of specific book-entry interests, or store the contents, consequences or historical records of the legal behaviors concerned. For example, when a director takes his/her seat, he/she needs to call the "Take Seat" API of General Keeper, inputting the shareholders meeting resolution's sequence number which approved him/her to be director and the position number of the director, and then: (1) General Keeper will query and obtain the user number of the message sender account, and call the “Take Seat” API of Register of Directors Keeper (“ROD Keeper”) so as to process the subsequent actions thereof; (2) ROD Keeper will firstly call the General Meeting Minutes (“GMM”) to verify: whether the type of motion is to elect director and whether the motion has been approved; (3) If the type and approval status of the motion are all verified, ROD Keeper will further call the GMM to verify whether the user number of the message sender is equal to the candidate’s number as defined in the position’s description of the motion of nomination, if yes, then update the state of the motion into "executed"; (4) If the message sender's identity is verified, ROD Keeper will call Register of Directors (“ROD”) to record the user number, timestamp, as well as the block number concerned, so as to complete the entire process of “Taking Position”. https://i.ibb.co/Bq2c90Q/Director-Take-Position.jpg In the above process, GMM and ROD are the two types of Registers. GMM provides the motion’s type and its voting results by answering the query request of ROD Keeper, so as to determine whether the conditions for exercising the rights has been fulfilled, thereafter, verifies the caller's identity against the user number of the motion's candidate. Then, ROD Keeper write the user number, date and block number of inauguration into ROD, so as to write down the action records of "inauguration". Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (7) Post by: paul.lee.attorney on January 30, 2024, 01:55:11 PM 3.1.2.Types of Registers
Based on the types of information recorded, Registers can be divided into two basic categories: Registers of book-entry interests and Registers of governance records, which includes: (1) Register of Constitutions ("ROC"): records all editions of Shareholders Agreements with respect to their address, legal force status, procedural schedules for creation, review and voting etc., so as to enable users or smart contracts to retrieve or check the currently valid version of Shareholders Agreement, as well as all its historical revoked versions; Structure of Object File Code: struct Head { Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (8) Post by: paul.lee.attorney on February 01, 2024, 06:26:55 AM (2)Register of Directors ("ROD"): records all information about the positions of directors or managers with respect to their candidate’s user number, nominator, the voting rules applied for election, the start and end date of tenure etc., so as to enable users or smart contracts to search or verify the identity, authorities or duties of executive officers;
Structure of Object Position Code: struct Position { (3) Board Meeting Minutes ("BMM"): records all the motions submitted to the Board of Directors for approval with respect to their proposer, proposal date, start and end time of voting, voting results, delegate arrangements, executor, execution status, etc, so as to enable users or smart contracts to check or verify the motions of Board; Structure of Object Motion Code: struct Head { (4)Register of Members ("ROM"): records all information about members or shareholders with respect to their equity shares, voting rights, amount of subscribed / paid-in / clean capital (i.e. capital contribution with no pledges, transfer arrangements or other legal encumbrances), so as to enable users or smart contracts to check or verify the shareholding status of a member; Structure of Object Member Code: struct Head { (5) General Meeting Minutes ("GMM"): records all the motions submitted to the General Meeting of Shareholders for approval with respect to their proposer, proposal time, voting start and end time, voting results, delegate arrangements, executor, execution state, etc, so as to enable users or smart contracts to check or verify the relevant information of the motion submitted to General Meeting of Members; (6) Register of Agreements ("ROA"): records all the Investment Agreements with respect to their address, status, transaction type and detailed arrangements, parties, procedural schedules for exercising special rights, so as to enable users or smart contracts to check and retrieve the relevant Investment Agreements, and, to enable the parties concerned to execute the deals under these Investment Agreements. Moreover, ROA also can mock the transaction results and calculate the ultimate controller of the company after closing of the deals concerned, so as to anticipate whether the conditions of drag-along or tag-along will be triggered (i.e. change of controlling power); (7) Register of Options ("ROO"): record all information of (call / put) options with respect to their right holders, obligors, execution period, closing period, trigger conditions, exercise price, class and amount of the subject equity, etc; Structure of Object Option Code: struct Cond { (8) Register of Pledges ("ROP"): record all pledges attached to the equity shares with respect to their creditor, debtor, pledgor, pledged amount, guaranteed amount, debt expiration date, guarantee period etc.; Structure of Object Pledge Code: struct Head { (9) Register of Shares ("ROS"): record all equity shares issued by the company with respect to their shareholders, class, voting weight, issue date, paid-in deadline / date, par value, paid-in amount, issue price and so on; Structure of Share Code: struct Head { (10) List of Orders ("LOO"): record all information about listing trade of shares with respect to the subject shares class, sequence number, investors, limited sell orders, limited buy orders, and deals closed etc. Structure of Sell Order Code: struct Node { Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (9) Post by: paul.lee.attorney on February 02, 2024, 07:55:37 AM 3.2. Bookkeepers
Bookkeepers defined dozens of APIs of legal behaviors regarding corporate governance and share transactions, so as to manage and control the identification of actors, conditions, procedures and legal consequences of the relevant legal behaviors. 3.2.1. Functions of Bookkeepers When users exercise their rights, Bookkeepers will call Shareholders Agreement and the relevant Registers as per legal logic, so as to check what conditions need to be satisfied to conduct the relevant legal behaviors (or what parameters need to be relied on for the subsequent calculations), and, together with the input parameters obtained from the API, Bookkeepers will make decisions on whether the conditions are fulfilled or calculate the specific values of the intermediate parameters. If all conditions are fulfilled, Bookkeepers will call the relevant Registers to update the states of book-entry interests or record the contents of the legal behaviors, such as expression of intention, or action tracks of the behaviors. For example, when a shareholder votes on a motion, it needs to call the "Cast Vote" API of General Keeper, input the subject motion number and express its attitude as support, against or abstain, thereafter, General Keeper will call Reg Center to retrieve the user number of shareholder and further call the “Cast Vote” API of General Meeting Minutes Keeper (“GMM Keeper”) so as to hand over the control rights on the subsequent processing steps, and then, GMM Keeper will: (1)retrieve the motion object from General Meeting Minutes; (2)retrieve the voting rule from Shareholders Agreement as per the voting rule number specified in the motion object, and deduce the voting period accordingly; (3)determine whether it is in the voting period as per the current timestamp; (4)if within the voting period, call the Register of Members to verify whether the voter is a shareholder of the company; (5)If it is a shareholder, then check the entrust arrangements from the Delegate Map of the motion, and then call the Register of Members again to retrieve and calculate the total voting rights entrusted from the principals as well as represented by the voter; (6)Finally, store the voting information (user number, voting attitude, total voting rights, voting time, etc.) in the General Meeting Minutes. From the above example, it can be deduced that Bookkeeper acts as the control center of verifying the conditions precedent and monitoring the logical flows of the legal behaviors. In order to satisfy the size requirements of EIP-170, ComBoox defines two types of smart contracts, namely, General Keeper and several Sub-Bookkeepers. 3.2.2.General Keeper General Keeper sits at the uppermost layer of the company book-entry system and has the following functions: (1)Acts as the only entry of the company's book-entry system for write operation commands and is responsible for routing write commands to specific Sub-Bookkeeper; (2)Acts as the address registration center for Registers, and responses the address of specific Register as per its sequence number; (3)Represents the legal entity of the company and conducts legal behaviors on behalf the company on-chain, e.g. signing or executing smart contracts, making payments in tokens, exercising voting rights, etc; (4)Represents the company to hold cryptocurrencies such as ETH and CBP etc., and makes payments in accordance with the resolutions of General Meeting of Members or Board of Directors; (5)Temporarily keeps ETH consideration incurred from share transfer transactions, which can be picked up by the seller to its public key account thereafter. 3.2.3.Sub-Bookkeepers Sub-Bookkeepers are the core computation layer controlling the identity verification, conditions, procedures and legal consequences of legal behaviors, which includes: (1)Register of Constitutions Keeper ("ROC Keeper"): has write permissions to Register of Agreements, and controls the legal behaviors of creating, circulating, signing, enactivating, and accepting Shareholders Agreements; ROC Keeper API Code:
(2) Register of Directors Keeper ("ROD Keeper"): has write permissions to Register of Directors, and controls the legal behaviors of inauguration, dismissal, and resignation of directors or executive officers; ROD Keeper API Code:
(3) Board Meeting Minutes Keeper ("BMM Keeper"): has write permissions to Board Meeting Minutes, and controls the legal behaviors of creating and proposing board motions, appointing voting delegate, casting vote, counting of vote results, and executing actions. The motions concerned include the appointing and removing managers, reviewing contracts, paying tokens, and calling on-chain smart contracts; BMM Keeper API Code:
(4) Register of Members Keeper ("ROM Keeper"): has write permissions to Register of Shares and Register of Members, and controls the legal behaviors of setting the maximum number of shareholders, setting hash locks on paid-in shares, releasing and withdrawing paid-in shares, and decreasing registered capital; ROM Keeper API Code:
(5) General Meeting Minutes Keeper ("GMM Keeper"): has write permissions to General Meeting Minutes, and controls the legal behaviors of creating and proposing motions, appointing voting delegate, casting votes, counting vote results, and executing resolutions. The motions include nominating and removing directors, reviewing contracts, paying tokens and calling smart contracts; GMM Keeper API Code:
(6) Register of Agreements Keeper ("ROA Keeper"): has write permissions to Register of Agreements and Register of Shares, and controls the legal behaviors of creation, circulation, and signing of Investment Agreements, as well as locking the subject equity, releasing and withdrawing the subject equity, issuing new shares, transferring share, terminating transaction, and paying consideration; ROA Keeper API Code:
(7) Register of Options Keeper ("ROO Keeper"): has write permissions to Register of Options and Register of Shares, and controls the legal behaviors of inputting trigger events, exercising options, setting option’s pledge, paying off option, executing option’s pledge, requesting the against member to buy, paying consideration for the rejected deal’s equity shares, and executing the against member's pledge; ROO Keeper API Code:
(8) Register of Pledges Keeper ("ROP Keeper"): has write permissions to Register of Pledges, Register of Shares, and Register of Agreements, and controls the legal behaviors of refunding debts, extending secured period, creating, transferring, executing, locking, releasing, withdrawing and revoking pledges; ROP Keeper API Code:
(9) Shareholders Agreement Keeper ("SHA Keeper"): has write permissions to Register of Shares and Register of Agreements, and controls the legal behaviors of exercising and accepting special shareholders' rights like Drag-Along, Tag-Along, Anti-Dilution and First Refusal; SHA Keeper API Code:
(10) List of Orders Keeper ("LOO Keeper"): has write permissions to List of Orders, Register of Shares, and Register of Members, and controls legal behaviors of registering, approving and revoking accredited investors, listing and withdrawing initial offers, sell orders, and placing buy orders; LOO Keeper API Code:
Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (10) Post by: paul.lee.attorney on February 07, 2024, 03:40:30 AM 3.3. Shareholders Agreement
Shareholders Agreement is to dynamically define rules and conditions relating to share transaction and corporate governance, which can be deemed as a constitutional document of the company. When users exercise their rights, Shareholders Agreement will, as per the query request of Bookkeepers, search and obtain specific rules or terms, based on which a specific threshold value, parameter, or testing result will be parsed and reverted, so as for Bookkeepers to conduct further calculation or processing. For example, when a shareholder casts vote for a motion, the relevant Bookkeeper will call Shareholders Agreement to query the voting period of certain governing voting rule, and then, based on the number of voting days obtained, the motion’s proposal date, as well as the current block timestamp, Bookkeeper will determine whether it is in the voting period. The detailed terms and rules of Shareholders Agreement are abstractly defined as different data objects and methods according to the legal logic of corporate governance. During the drafting process, different values can be dynamically set to the different attributes, so as to define the different rules of the legal behavior concerned. A draft Shareholders Agreement will become effective upon approval of the general meeting of shareholders. For example, when setting voting rules for different types of share transaction, a 30-days' review period and a two-thirds voting threshold can be set for capital increase deals, while, a 15-days' review period and a one-half voting threshold can be set for share transfer deals. Thereafter, during the process when a transaction is submitted to the shareholders’ meeting for reviewing and voting, Bookkeeper will calculate and determine the time period and voting results as per the transaction type accordingly. In the Shareholders Agreement, the rules of corporate governance and share transaction can be categorized into "Rules" and "Terms" according to their respective complexity and governing matters. 3.3.1.Rules “Rules” are defined in bytes32, which depend on the public library of Rules Parser to parse their key attributes, length of period or key threshold of conditions, so as to transform into structured objects. Structure of Voting Rule Code: // Object of VotingRule Function of Voting Rule Parser Code: function votingRuleParser(bytes32 sn) public pure returns (VotingRule memory rule) Each rule has its own sequence number, so it’s quite easy to set up a mapping from “sequence number” to the bytes32 “rule”. Rules Mapping Code:
Currently the rules include following types: General Governance Rules, Voting Rules, Position Allocate Rules, First Refusal Rules, Grouping Update Orders, and Listing Rules. 3.3.2.Terms "Terms" are defined in form of independent smart contracts, and are relied on structured data objects and their methods to define specific pre-conditions of rights and intermediate parameters algorithm. Each term has its own sequence number, so it’s quite easy to set up a mapping from “title number” to the “address of term”. Term Mapping Code:
Currently the terms include the following types: Anti Dilution, Lock Up, Drag Along, Tag Along, Put Option and Call Option. Therefore, Shareholders Agreement can be deemed as a data base comprises of “rules mapping” and “terms mapping”, which is to dynamically define the parameters and attributes of different rules so as to retrieve them in runtime. As for the functions of Rules Parser and Terms, they are to set up models for the rules and terms in line with legal logic, and to abstractly define their core attributes and methods, thereafter, expose certain APIs so as for users to dynamically define various attributes or parameters of those rules and terms accordingly. So that, during runtime, in accordance with user’s commands, specific Bookkeeper may search Shareholders Agreement as per the predefined logic of specific legal behavior, to get specific attribute or parameter of certain rule, and then, to further determine certain condition or to further control certain process. Interface of Lock-Up Code:
Title: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (11) Post by: paul.lee.attorney on February 21, 2024, 07:09:57 AM 3.4. Investment Agreement
Investment Agreement dynamically defines all necessary elements of deals for issuing or transferring shares, such as the subject equity shares, price, amounts, buyer's identity, signing deadline, closing deadline, contractual parties and so on. After an Investment Agreement is properly signed on-chain, the parties can call the relevant API of Bookkeepers to push forward the rest procedures concerning the deals' execution, like General Meeting's reviewing and approving, paying consideration and closing etc. The relevant Bookkeepers will, strictly in line with the rules and terms set out in Shareholders Agreement, automatically verify the caller's identy, check the fulfillment of pre-conditions, and control the transaction's procedure, until realizing the final business purpose ---- updates the Register of Shares. The nature of Investment Agreement is actually a special script (or, a batch file) consisting of a series of write operation commands to update the book-entry states of the equity shares (i.e. update the Register of Shares), which will be automatically executed in an orderly manner, under the control of the relevant Bookkeepers in line with predefined conditions and procedures set out in the Shareholders Agreement, and will eventually realize the business objectives of updating book-entry states of equity shares, i.e. to realize the legal consequences of issue new shares or transfer existing shares. If there are any special arrangements stipulated in Shareholders Agreement, such as "First Refusal", "Drag-Along", "Tag-Along", or "Anti-Dilution" etc., the right holders can call the relevant API of Bookkeeper to exercise their rights during the specific exercising period, then, Bookkeeper will automatically change the counter party (for first refusal), add free transaction for gift shares (for anti-dilution), or add new transactions with the same price and conditions (for drag-along or tag-along), in accordance with the algorithm and methods defined in Shareholders Agreement, so as to realize the business purpose thereof. Inside Investment Agreement, the substantive elements of a share transaction (subject equity, buyer, amount, price, closing deadline, etc.) are defined by a type of structured object, called "Deal"; while, the procedural elements (such as contract parties, signing deadline, closing deadline, etc.) are defined by a reusable and inheritable smart contract component, called "Signature Page". 3.4.1. Deal The object of Deal defines all necessary factors to issue new shares or transfer existing shares in Register of Shares, which also defines a hash lock in form of bytes32 for parties to arrange off-chain or cross-chain payment for equity consideration. Structure of Object Deal Code:
The share transactions can be categorized into three basic types: “capital increase”, “external transfer”, and “internal transfer” as per the different types of buyer, and, by combinations of these 3 basic types, it can be further deduced into 7 types of deals in total. In Shareholders Agreement, different voting rules can be tailored for each of the said 7 types, so as to satisfy the customized requirements of investors. 3.4.2. Signature Page Signature page is an independent, reusable and inheritable component smart contract that defines several key attributes of contract’s execution, including contractual parties, signature fields, signing deadline and closing deadline etc.. Investment Agreement defines an initial Signature Page and a supplemental Signature Page, the former is to be signed by the contracting parties during the contract’s formation, while the latter will be automatically filled up by Bookkeeper when the relevant right holders exercise their special rights (such as "First Refusal", "Tag-along, "Drag-along", and "Anti-Dilution" etc.) When a party calls the API of Bookkeeper to sign an Investment Agreement, Bookkeeper will record the block number and timestamp of the signing action in the signature field, moreover, the signature field also can store a special hash value generated by hashing handwriting signatures or scanned copy of company seal, which can be used to verify digital documents in future. Structure of Signature Page Code:
Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (12) Post by: paul.lee.attorney on February 22, 2024, 03:15:50 AM 4. Identification and Access Control
The smooth and safe operation of the system heavily relies on users' access control and routing control of write commands. In other words, for the calling commands which can change the world states ("write commands"), it is vital important to review and verify the identity and authority of the message sender (i.e. the calling account that send out the commands), and at the same time, the smart contract that received the write commands also needs to strictly control their further routing path, i.e. the target contract's address as well as its API to be further called. In brief, by strict controlling the write commands' routing path from two directions of "receiving” and “sending", the information of the whole system can be updated as per the predefined commercial and legal logic. The write commands in the system can be divided into three categories: (1)System Configuration: refers to the contracts drafting and system configuration actions triggered by external accounts, which will NOT lead to legal consequences; (2)Legal Behavior: refers to the share transaction and corporate governance activities triggered by external accounts, which WILL directly lead to legal consequences; and (3)Algorithmic Control: refers to the write commands sent by Bookkeeper, upon receiving the previous two types of write commands, in accordance with the predefined algorithms of system, in an orderly manner and be able to change the states of other smart contracts like Registers, Shareholders Agreement, or Investment Agreement. For the above write commands, the system adopts three verification methods as per their different nature of behaviors and scopes of influence. 4.1. Access Control Mechanism on smart contracts' level For System Configuration and Algorithmic Control, these two types of write commands do not dispose any book-entry interests of the system, and usually only take effects within the scope of the company, therefore, belong to the category of technique activities like system configuration, algorithmic control, and operation maintenance. Therefore, ComBoox adopts a special smart contract of Access Control, which is inheritable and with component attributes, to verify identity of message sender by means of checking their address at the level of each smart contract. Access Control is a reusable, inheritable, component-based smart contract, which specialized in defining roles grouping and their verification algorithms on the level of smart contract. Each and every smart contracts of the system are all sub-contracts of Access Control, so they all can use the methods and attributes inherited from Access Control to define roles with different write permissions and to verify them accordingly. Access Control defines two special roles, Owner and Keeper, as well as a predefined role group ---- Attorneys (the admin of which is called as "General Counsel"). Structure of Role and Roles Repo Code: struct Role { 4.1.1. Owner Owner can be initially set by the account deploying the smart contract, which has the authority to create new group of roles and to appoint admin of the group. From commercial and legal view, Owner maps the role of "shareholder" of a company who has the rights to create, propose, review, and voting on approval of the legal documents like contracts, bylaws as well as motions of the General Meeting. Owner can transfer its role to other accounts, and, will lose its role as Owner thereafter. Direct Keeper is the only role that cannot be influenced by Owner, which ensures its relative independence with respect to the roles appointment and control rights assignment, so as to check and balance the power of Owner from the perspective of system maintenance or duties independence. 4.1.2. Direct Keeper Direct Keeper can be initially set by the account deploying of the smart contract, which has special authority to configure system, mapping the role of "Company Secretary" or “Accountants” from the commercial and legal view, the authority design of which reflects the characteristics of “Company Secretary” or “Accountants” who are relatively independent from shareholders and senior executives in system maintenance and assuming independent responsibilities. Direct Keeper can transfer its role to other accounts, and will lose the role of Direct Keeper thereafter. All write APIs of SubKeepers are set as only accessible for their Direct Keepers, and after their deployment, General Keeper will be set as the only Direct Keeper of all the SubKeepers. In this way, all the write authorities will be collectively authorized to General Keeper, thus excluding any external accounts or external contracts out of the system interfering with the company's governance activities, and ensuring that the company's book-entry records can operate securely and automatically, without any human interference involved. The "Direct Keeper" of General Keeper has the following special authorities: (1)Set and update the registration address for each SubKeeper and Register; (2)Appoint or remove the "Direct Keeper" for each of the SubKeeper and Register; (3)Input off-chain "oracle" data (e.g. financial data such as revenue, net profit, etc.) into the system as trigger conditions for exercising certain shareholders rights; and (4)Set up hash lock for pay-in capital, so as for new share subscribers can automatically obtain their Certificates of Contribution upon paying their capital contribution. Therefore, the characters of its authority are quite similar to "Company Secretary" or "Chief Accountant". If Direct Keeper of General Keeper transfers its role to "zero address", then it means the possibility of human interference with the company's book-entry system is completely abandoned, and the system will automatically operate by smart contracts. As a cost, such auto-running system cannot be upgraded with new contract templates, neither can use off-chain data as trigger conditions for special rights (like call option or put option) any more. 4.1.3. General Counsel and Attorneys General Counsel is the admin of the roles group of Attorneys and has authorities to grant Attorney role to any account addresses. Attorneys can quit their role as Attorney by calling the "Renouce Role" API, and General Counsel can call the "Abandon Role" API to fire all Attorneys at once. For two types of smart contracts, Shareholders Agreement and Investment Agreement, only Attorney can call their write APIs to "draft" the contents of the contracts (such as rules and terms of Shareholders Agreement), or the deal's elements for trading shares (such as the subject share, price, amount), as well as the procedural conditions concerned (such as the contractual parties, signing deadline, and closing deadline etc.). Therefore, after creating a smart contract of Shareholders Agreement or Investment Agreement, the creating shareholder as the "Owner" needs to appoint a "General Counsel" (which can further appoint one or more Attorneys) to “draft” the rest terms of the contents. After drafting, Owner can review and confirm the contract contents and then calls "Lock Contents" API to revoke the appointment for all attorneys at once, and to transfer the role of Owner to "zero address", so that, the contents can no longer be altered manually. It should be emphasized that if Owner does not transfer its role to "zero address", it still can modify the contract by reappointing other address as "General Counsel" or "Attorneys". Title: Re: ComBoox: A Blockchain-Based Equity Share Book-Entry Platform (13) Post by: paul.lee.attorney on April 01, 2024, 05:55:13 AM 4.2. Commands Routing Mechanism within the company
A Register usually allows several SubKeepers to call its write APIs, therefore, it is not economic to rely on Access Control solution to control write permissions among different roles for each of the contracts. Therefore, ComBoox sets up two registration mappings of address in General Keeper to satisfy the routing requirements for Algorithmic Control commands among the book-entry Registers of a company. There are two special registration mappings of address in the General Keeper, which are used to track and record the addresses of "SubKeepers" and "Registers", and adopt a structure of "sequence number => address" so as to ensure a timely search of the smart contract’s address as per its corresponding sequence number. Address Mappings in General Keeper Code: mapping(uint256 => address) private _books; When deploying the system, the contract addresses of each SubKeeper and Register will be input into the registration mappings accordingly, thereafter, in runtime, the relevant write API of Register will, before processing the write command received, firstly call General Keeper to query and verify whether the message sender’s address equals to the address of the specific contract registered in the mappings, so as to complete the identity verification for the Algorithmic Control Commands. For example, the share transfer API of Register of Shares will be called by ROA Keeper when closing a share transfer transaction, and will also be called by SHA Keeper when implementing an Anti-Dilution right. Therefore, Register of Shares cannot rely on the unique role of “Direct Keeper” defined by Access Control to control its write permission, instead, it will query the address mapping of General Keeper to check and verify message sender’s identity, i.e. as long as the account address of the caller can match any one of the two contracts mentioned above, the verification will be passed. Identity Verification Function for Sub-Keepers Code: function isKeeper(address caller) external view returns (bool) { |