A standard interface for Human Capital Accounting tokens.
## Abstract
The following standard allows for the implementation of a standard API for HUCAP tokens within smart contracts. This standard provides basic functionality to discover, track and transfer the motivational hierarchy of human resources. While blockchain architecture has succeeded in the financialisation of integrity by way of transparency; correspondingly real world outcomes will be proportional to the degree of individualisation of capital by way of knowledge.
## Motivation
The Ethereum protocol architecture has a deterministic world-view bounded to the random reality of the human domain that supplies the intentions and logic. The yellow paper formally defines the EVM as a state machine with only deterministic parameters and state transition operators. Oracle requests to another on-chain contract, and/or off-chain HTTP lookups still make for multiple deterministic transactions.
A standard interface that allows the appraisal of individual capabilities concurrently with output and the overall knowledge-base will reduce market search costs and increase the autonomous insertion of mindful innovation into the blockchain ecosystem. We provide for simple smart contracts to define and track an arbitrarily large number of HUCAP assets. Additional applications are discussed below.
The Belief-Desire-Intention model is a plan-theoretic framework for establishing means-end coherence in agent based modelling system.
The blockchain's cryptographic security architecture reliably scales to a blockchain based PKI web-of-trust hierarchies.
ERC-20 token standard allows any tokens on Ethereum to be re-used by other applications: from wallets to decentralized exchanges.
ERC-721 token standard allows wallet/broker/auction applications to work with any NFT on Ethereum.
ERC-1155 Crypto Item standard allows a smart contract interface where one can represent any number of ERC-20 and ERC-721 assets in a single contract.
This standard is inspired by the belief–desire–intention (BDI) model of human practical reasoning developed by Michael Bratman as a way of explaining future-directed intention. A BDI agent is a particular type of bounded rational software agent, imbued with particular mental attitudes, viz: Beliefs, Desires and Intentions (BDI). The model identifies commitment as the distinguishing factor between desire and intention, and a noteworthy property that leads to (1) temporal persistence in plans and in the sense of explicit reference to time, (2) further plans being made on the basis of those to which it is already committed, (3) hierarchical nature of plans, since the overarching plan remains in effect while subsidiary plans are being executed.
The BDI software model is an attempt to solve a problem of plans and planning choice and the execution thereof. The complement of which tenders a sufficient metric for indicating means-end coherence and ascribing cost baselines to such outcomes.
## Specification
#### Main Interface
```solidity
pragma solidity ^0.4.25;
pragma experimental ABIEncoderV2;
/**
@title ERC-**** Human Capital Accounting Standard
@dev See https://github.com/freeworkculture/kazini/issues/11
Note: the ERC-165 identifier for this interface is 0xf23a6e61.
*/
interface IERC_HUCAP {
/**
@notice Compute the index value of an Agents BDI in the ecosystem.
@param _address Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function updateIndex() internal returns (bool);
/**
@notice Get the active/inactive and states of an Agent in the ecosystem.
@param _address Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function iam() view public returns (bool iam_, IERC_HUCAP_TYPES.IS state_);
/**
@notice Fetch the bdi index value of an Agent in the ecosystem.
@param _address Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function index() view public returns (uint8 index_);
/**
@notice Count of Public Keys in key ring of an Agent in the ecosystem.
@param _address Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function ringLength() view public returns (uint ringlength_);
/**
@notice Get the PGP Public Key Id of an Agent in the ecosystem.
@param "" Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function keyId() view public returns (bytes32 KEYID_);
/**
@notice Get the merit data of an Agent in the ecosystem.
@param "" Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function merits() view public returns (
uint experience_,
bytes32 reputation_,
bytes32 talent_,
uint8 index_,
bytes32 hash_);
/**
@notice Get the accreditation of an Agent in the ecosystem.
@param "" Set the stance of an agent
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function kbase() view public returns (IERC_HUCAP_TYPES.KBase kbase_);
/**
@notice Get the desire of an Agent in the ecosystem.
@param _desire Pro-attitude
@dev For the purpose of
Throws on any error rather than return a false flag to minimize user errors
*/
function desire(bytes1 _desire) view external returns (bytes32);
/**
@notice Get the intention of an Agent in the ecosystem.