StableCredit
StableCredit contract
Extends the ERC20 standard to include mutual credit functionality where users can mint tokens into existence by utilizing their lines of credit. Credit defaults result in the transfer of the outstanding credit balance to the lost debt balance.
Restricted functions are only callable by network operators.
Methods
__MutualCredit_init
function __MutualCredit_init(string name_, string symbol_) external nonpayable
initializes ERC20 with the name and symbol provided.
should be called directly after deployment (see OpenZeppelin upgradeable standards).
Parameters
| Name | Type | Description | 
|---|
| name_ | string | name of the credit token. | 
| symbol_ | string | symbol of the credit token. | 
__StableCredit_init
function __StableCredit_init(string name_, string symbol_, address access_) external nonpayable
initializes lost debt account with max limit and assigns access contract provided.
should be called directly after deployment (see OpenZeppelin upgradeable standards).
Parameters
| Name | Type | Description | 
|---|
| name_ | string | name of the credit token. | 
| symbol_ | string | symbol of the credit token. | 
| access_ | address | address of access manager contract. | 
access
function access() external view returns (contract IAccessManager)
the access manager contract which manages network role access control
Returns
| Name | Type | Description | 
|---|
| _0 | contract IAccessManager | undefined | 
allowance
function allowance(address owner, address spender) external view returns (uint256)
See {IERC20-allowance}.
Parameters
| Name | Type | Description | 
|---|
| owner | address | undefined | 
| spender | address | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | undefined | 
approve
function approve(address spender, uint256 amount) external nonpayable returns (bool)
See {IERC20-approve}. NOTE: If amount is the maximum uint256, the allowance is not updated on transferFrom. This is semantically equivalent to an infinite approval. Requirements: - spender cannot be the zero address.
Parameters
| Name | Type | Description | 
|---|
| spender | address | undefined | 
| amount | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | bool | undefined | 
assurancePool
function assurancePool() external view returns (contract IAssurancePool)
the reserve pool contract which holds and manages reserve tokens
Returns
| Name | Type | Description | 
|---|
| _0 | contract IAssurancePool | undefined | 
balanceOf
function balanceOf(address account) external view returns (uint256)
See {IERC20-balanceOf}.
Parameters
| Name | Type | Description | 
|---|
| account | address | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | undefined | 
burn
function burn(uint256 amount) external nonpayable
Destroys amount tokens from the caller. See {ERC20-_burn}.
Parameters
| Name | Type | Description | 
|---|
| amount | uint256 | undefined | 
burnFrom
function burnFrom(address account, uint256 amount) external nonpayable
Destroys amount tokens from account, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for accounts's tokens of at least amount.
Parameters
| Name | Type | Description | 
|---|
| account | address | undefined | 
| amount | uint256 | undefined | 
burnLostDebt
function burnLostDebt(address member, uint256 amount) external nonpayable returns (uint256)
Reduces lost debt in exchange for assurance reimbursement.
Must have sufficient lost debt to service.
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| amount | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | reimbursement amount from assurance pool | 
createCreditLine
function createCreditLine(address member, uint256 limit, uint256 initialBalance) external nonpayable
called by the underwriting layer to assign credit lines
If the member address is not a current member, then the address is granted membership
Parameters
| Name | Type | Description | 
|---|
| member | address | address of line holder | 
| limit | uint256 | credit limit of new line | 
| initialBalance | uint256 | positive balance to initialize member with (will increment lost debt) | 
creditBalanceOf
function creditBalanceOf(address member) external view returns (uint256)
returns the credit balance of a given member
Parameters
| Name | Type | Description | 
|---|
| member | address | address of member to query | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | credit balance of member | 
creditIssuer
function creditIssuer() external view returns (contract ICreditIssuer)
the credit issuer contract which manages credit line issuance
Returns
| Name | Type | Description | 
|---|
| _0 | contract ICreditIssuer | undefined | 
creditLimitLeftOf
function creditLimitLeftOf(address member) external view returns (uint256)
returns the credit limit left of a given member
Parameters
| Name | Type | Description | 
|---|
| member | address | address of member to query | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | credit limit left of member | 
creditLimitOf
function creditLimitOf(address member) external view returns (uint256)
returns the credit limit of a given member
Parameters
| Name | Type | Description | 
|---|
| member | address | address of member to query | 
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | credit limit of member | 
decimals
function decimals() external view returns (uint8)
returns the number of decimals used by the credit token.
Returns
| Name | Type | Description | 
|---|
| _0 | uint8 | number of decimals. | 
decreaseAllowance
function decreaseAllowance(address spender, uint256 subtractedValue) external nonpayable returns (bool)
Atomically decreases the allowance granted to spender by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender cannot be the zero address. - spender must have allowance for the caller of at least subtractedValue.
Parameters
| Name | Type | Description | 
|---|
| spender | address | undefined | 
| subtractedValue | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | bool | undefined | 
increaseAllowance
function increaseAllowance(address spender, uint256 addedValue) external nonpayable returns (bool)
Atomically increases the allowance granted to spender by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender cannot be the zero address.
Parameters
| Name | Type | Description | 
|---|
| spender | address | undefined | 
| addedValue | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | bool | undefined | 
lostDebt
function lostDebt() external view returns (uint256)
Shared account that manages the rectification of lost debt.
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | amount of lost debt shared by network participants. | 
name
function name() external view returns (string)
Returns the name of the token.
Returns
| Name | Type | Description | 
|---|
| _0 | string | undefined | 
repayCreditBalance
function repayCreditBalance(address member, uint128 amount) external nonpayable
Repays referenced member's credit balance by amount.
Caller must approve this contract to spend reserve tokens in order to repay.
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| amount | uint128 | undefined | 
setAccessManager
function setAccessManager(address _access) external nonpayable
enables network admin to set the access manager address
Parameters
| Name | Type | Description | 
|---|
| _access | address | address of access manager contract | 
setAssurancePool
function setAssurancePool(address _assurancePool) external nonpayable
enables network admin to set the assurance pool address
Parameters
| Name | Type | Description | 
|---|
| _assurancePool | address | address of assurance pool contract | 
setCreditIssuer
function setCreditIssuer(address _creditIssuer) external nonpayable
enables network admin to set the credit issuer address
Parameters
| Name | Type | Description | 
|---|
| _creditIssuer | address | address of credit issuer contract | 
symbol
function symbol() external view returns (string)
Returns the symbol of the token, usually a shorter version of the name.
Returns
| Name | Type | Description | 
|---|
| _0 | string | undefined | 
totalSupply
function totalSupply() external view returns (uint256)
See {IERC20-totalSupply}.
Returns
| Name | Type | Description | 
|---|
| _0 | uint256 | undefined | 
transfer
function transfer(address to, uint256 amount) external nonpayable returns (bool)
See {IERC20-transfer}. Requirements: - to cannot be the zero address. - the caller must have a balance of at least amount.
Parameters
| Name | Type | Description | 
|---|
| to | address | undefined | 
| amount | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | bool | undefined | 
transferFrom
function transferFrom(address from, address to, uint256 amount) external nonpayable returns (bool)
See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum uint256. Requirements: - from and to cannot be the zero address. - from must have a balance of at least amount. - the caller must have allowance for from's tokens of at least amount.
Parameters
| Name | Type | Description | 
|---|
| from | address | undefined | 
| to | address | undefined | 
| amount | uint256 | undefined | 
Returns
| Name | Type | Description | 
|---|
| _0 | bool | undefined | 
updateCreditLimit
function updateCreditLimit(address member, uint256 creditLimit) external nonpayable
update existing credit lines
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| creditLimit | uint256 | must be greater than given member's outstanding debt | 
writeOffCreditLine
function writeOffCreditLine(address member) external nonpayable
transfer a given member's debt to the lost debt account
Parameters
| Name | Type | Description | 
|---|
| member | address | address of member to write off | 
Events
AccessManagerUpdated
event AccessManagerUpdated(address accessManager)
Parameters
| Name | Type | Description | 
|---|
| accessManager | address | undefined | 
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Parameters
| Name | Type | Description | 
|---|
owner indexed | address | undefined | 
spender indexed | address | undefined | 
| value | uint256 | undefined | 
AssurancePoolUpdated
event AssurancePoolUpdated(address assurancePool)
Parameters
| Name | Type | Description | 
|---|
| assurancePool | address | undefined | 
ComplianceUpdated
event ComplianceUpdated(address sender, address recipient, bool senderCompliance, bool recipientCompliance)
Parameters
| Name | Type | Description | 
|---|
| sender | address | undefined | 
| recipient | address | undefined | 
| senderCompliance | bool | undefined | 
| recipientCompliance | bool | undefined | 
CreditBalanceRepaid
event CreditBalanceRepaid(address member, uint128 amount)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| amount | uint128 | undefined | 
CreditIssuerUpdated
event CreditIssuerUpdated(address creditIssuer)
Parameters
| Name | Type | Description | 
|---|
| creditIssuer | address | undefined | 
CreditLimitUpdate
event CreditLimitUpdate(address member, uint256 limit)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| limit | uint256 | undefined | 
CreditLimitUpdated
event CreditLimitUpdated(address member, uint256 creditLimit)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| creditLimit | uint256 | undefined | 
CreditLineCreated
event CreditLineCreated(address member, uint256 creditLimit, uint256 balance)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| creditLimit | uint256 | undefined | 
| balance | uint256 | undefined | 
CreditLineWrittenOff
event CreditLineWrittenOff(address member, uint256 amount)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| amount | uint256 | undefined | 
Initialized
event Initialized(uint8 version)
Parameters
| Name | Type | Description | 
|---|
| version | uint8 | undefined | 
LostDebtBurned
event LostDebtBurned(address member, uint256 amount)
Parameters
| Name | Type | Description | 
|---|
| member | address | undefined | 
| amount | uint256 | undefined | 
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Parameters
| Name | Type | Description | 
|---|
from indexed | address | undefined | 
to indexed | address | undefined | 
| value | uint256 | undefined |