License Types


A license which allows for the combination of several licenses via a boolean expression.

The contract stores the expression in abstract syntax tree (AST).

Configuration Functions

setAuth(bytes32 id, string calldata expression, address[] calldata authContracts)

Sets the boolean expression used to evaluate multiple licenses for a single node.

  • id: The node for which this expression is applied.
  • expression: A string defining the boolean expression of licenses. This made up of the following characters
    • ( Left bracket.
    • ) Right bracket.
    • & AND operation.
    • ! NOT operation.
    • | OR operation.
  • authContracts: an ordered list of licenses which are being used in the expression.

Example Expression:

string memory expression = "((0|1)&(!1)|(0|1))";
address[] authContracts = new address[](2);
authContracts[0] = address(public);
authContracts[1] = address(private);


  • 0: being the public license, i.e true
  • 1: being the private license, i.e false

The expression is equal to ( (T|F) & !(F) | (T|F)) or simplified to ( T & T & T) = T.

Access Functions

getRoot(bytes32 id)

Returns the root node of the AST expression for a given ContentGraph node, made up of a operator, address of a license and the ids of child AST nodes.

getNode(uint256 id)

Returns a node in the AST expression tree, made up of a operator, address of a license and the ids of child AST nodes.

auth(bytes32 id, address user)

Returns the result of evaluating the expression set for a given node for a given user.

See Smart Contracts for the address of this license.