/*
Balance contract is a contract deployed in FrostFS sidechain.

Balance contract stores all FrostFS account balances. It is a NEP-17 compatible
contract, so it can be tracked and controlled by N3 compatible network
monitors and wallet software.

This contract is used to store all micro transactions in the sidechain, such as
data audit settlements or container fee payments. It is inefficient to make such
small payment transactions in the mainchain. To process small transfers, balance
contract has higher (12) decimal precision than native GAS contract.

FrostFS balances are synchronized with mainchain operations. Deposit produces
minting of FROSTFS tokens in Balance contract. Withdraw locks some FROSTFS tokens
in a special lock account. When FrostFS contract transfers GAS assets back to the
user, the lock account is destroyed with burn operation.

# Contract notifications

Transfer notification. This is a NEP-17 standard notification.

	Transfer:
	  - name: from
	    type: Hash160
	  - name: to
	    type: Hash160
	  - name: amount
	    type: Integer

TransferX notification. This is an enhanced transfer notification with details.

	TransferX:
	  - name: from
	    type: Hash160
	  - name: to
	    type: Hash160
	  - name: amount
	    type: Integer
	  - name: details
	    type: ByteArray

Lock notification. This notification is produced when a lock account is
created. It contains information about the mainchain transaction that has produced
the asset lock, the address of the lock account and the FrostFS epoch number until which the
lock account is valid. Alphabet nodes of the Inner Ring catch notification and initialize
Cheque method invocation of FrostFS contract.

	Lock:
	  - name: txID
	    type: ByteArray
	  - name: from
	    type: Hash160
	  - name: to
	    type: Hash160
	  - name: amount
	    type: Integer
	  - name: until
	    type: Integer

Mint notification. This notification is produced when user balance is
replenished from deposit in the mainchain.

	Mint:
	 - name: to
	   type: Hash160
	 - name: amount
	   type: Integer

Burn notification. This notification is produced after user balance is reduced
when FrostFS contract has transferred GAS assets back to the user.

	Burn:
	  - name: from
	    type: Hash160
	  - name: amount
	    type: Integer
*/
package balance