@laborx/solidity-eventshistory-lib
TypeScript icon, indicating that this package has built-in type declarations

0.3.0 • Public • Published

Events History smart contracts library Build Status Coverage Status

Part of LaborX project. Organizes a set of smart contracts that can manage events emitting. Using this approach all events should have their own public function for emitting!

  • EventsHistory - defines a contract that could allow or forbid events with definite signature and source;
  • MultiEventsHistory - has less restrictions than EventsHistory, allows to filter events according to an authorized source;
  • MultiEventsHistoryAdapter - base contract, other contracts should inherit from it to receive an ability to store events history contract as a separate address and redirect all events to provided contract.

Installation

Organized as npm package this smart contracts could be easily added to a project by

npm install -s solidity-eventshistory-lib

Usage

Right before you decided to use them add this library to package dependencies and import any contract according to this pattern, for example:

import "solidity-shared-lib/contracts/MultiEventsHistoryAdapter.sol";

or

import "solidity-shared-lib/contracts/MultiEventsHistory.sol";

Details

Contracts that wants to use events history contract should go with a couple of rules:

  1. Define a contract that will hold events history address (it is recommended to inherit from _MultiEventsHistoryAdapter)
contract Manager is MultiEventsHistoryAdapter {
	event LogManagerEvent(address indexed self, uint at);
	
	//...
}
  1. Add a public function with event emitting action (_self() is a function from MultiEventsHistoryAdapter contract):
//...
function emitManagerEvent(uint _at) public {
	emit ManagerEvent(_self(), _at);
}
//...
  1. In your business logic you should invoke event emitting with the next command:
//...
function actionExample() external returns (bool) {
	//...
	Manager(getEventsHistory()).emitManagerEvent(now);
	return true;
}
//...

Since events history contract will be the source of events then to keep information who was the actual source you need to reserve one of the parameters for passing _self() together with event.

For more information and use cases look at tests.

Package Sidebar

Install

npm i @laborx/solidity-eventshistory-lib

Weekly Downloads

1

Version

0.3.0

License

AGPL-3.0

Unpacked Size

175 kB

Total Files

49

Last publish

Collaborators

  • be1box
  • ozalexo
  • mike.chronobank
  • aliaksei.hiatsevich
  • alesanro