AElf.Contracts.Profit

Profit contract.

The Profit contract is an abstract layer for creating scheme to share bonus. Developers can build a system to distribute bonus by call this contract.

Implement AElf Standards ACS1.

Contract Methods

Method Name Request Type Response Type Description
CreateScheme Profit.CreateSchemeInput aelf.Hash Create a scheme for profit distribution, and return the created scheme id.
AddBeneficiary Profit.AddBeneficiaryInput google.protobuf.Empty Add beneficiary to scheme.
RemoveBeneficiary Profit.RemoveBeneficiaryInput google.protobuf.Empty Remove beneficiary from scheme.
AddBeneficiaries Profit.AddBeneficiariesInput google.protobuf.Empty Batch add beneficiary to scheme.
RemoveBeneficiaries Profit.RemoveBeneficiariesInput google.protobuf.Empty Batch remove beneficiary from scheme.
ContributeProfits Profit.ContributeProfitsInput google.protobuf.Empty Contribute profit to a scheme.
ClaimProfits Profit.ClaimProfitsInput google.protobuf.Empty The beneficiary draws tokens from the scheme.
DistributeProfits Profit.DistributeProfitsInput google.protobuf.Empty Distribute profits to schemes, including its sub scheme according to period and token symbol, should be called by the manager.
AddSubScheme Profit.AddSubSchemeInput google.protobuf.Empty Add sub scheme to a scheme. This will effectively add the specified sub-scheme as a beneficiary of the parent scheme.
RemoveSubScheme Profit.RemoveSubSchemeInput google.protobuf.Empty Remove sub scheme from a scheme.
ResetManager Profit.ResetManagerInput google.protobuf.Empty Reset the manager of a scheme.
GetManagingSchemeIds Profit.GetManagingSchemeIdsInput Profit.CreatedSchemeIds Get all schemes managed by the specified manager.
GetScheme aelf.Hash Profit.Scheme Get scheme according to scheme id.
GetSchemeAddress Profit.SchemePeriod aelf.Address Get the virtual address of the number of period of the scheme.
GetDistributedProfitsInfo Profit.SchemePeriod Profit.DistributedProfitsInfo Query the distributed profit information for the specified period.
GetProfitDetails Profit.GetProfitDetailsInput Profit.ProfitDetails Query the beneficiary’s profit information on the scheme.
GetProfitAmount Profit.GetProfitAmountInput google.protobuf.Int64Value Query the amount of profit according to token symbol. (up to 10 periods).
GetProfitsMap Profit.ClaimProfitsInput Profit.ReceivedProfitsMap Query all profit (up to 10 periods).

AElf.Standards.ACS1

Method Name Request Type Response Type Description
SetMethodFee acs1.MethodFees google.protobuf.Empty Set the method fees for the specified method. Note that this will override all fees of the method.
ChangeMethodFeeController AuthorityInfo google.protobuf.Empty Change the method fee controller, the default is parliament and default organization.
GetMethodFee google.protobuf.StringValue acs1.MethodFees Query method fee information by method name.
GetMethodFeeController google.protobuf.Empty AuthorityInfo Query the method fee controller.

Contract Types

AElf.Contracts.Profit

Profit.AddBeneficiariesInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
beneficiary_shares BeneficiaryShare The beneficiary information. repeated
end_period int64 The end period which the beneficiary receives the profit.  

Profit.AddBeneficiaryInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
beneficiary_share BeneficiaryShare The beneficiary information.  
end_period int64 The end period which the beneficiary receives the profit.  

Profit.AddSubSchemeInput

Field Type Description Label
scheme_id aelf.Hash The parent scheme id.  
sub_scheme_id aelf.Hash The sub scheme id.  
sub_scheme_shares int64 The profit weight of sub scheme.  

Profit.BeneficiaryShare

Field Type Description Label
beneficiary aelf.Address The address of beneficiary.  
shares int64 The profit weight of the beneficiary in the scheme.  

Profit.ClaimProfitsInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
beneficiary aelf.Address The address of beneficiary.  

Profit.ContributeProfitsInput

Field Type Description Label
scheme_id aelf.Hash The scheme id to contribute.  
amount int64 The amount to contribute.  
period int64 The number of periods in which the income is used for dividends.  
symbol string The token symbol to contribute.  

Profit.CreateSchemeInput

Field Type Description Label
profit_receiving_due_period_count int64 Period of profit distribution.  
is_release_all_balance_every_time_by_default bool Whether all the schemes balance will be distributed during distribution each period.  
delay_distribute_period_count int32 Delay distribute period.  
manager aelf.Address The manager of this scheme, the default is the creator.  
can_remove_beneficiary_directly bool Whether you can directly remove the beneficiary.  
token aelf.Hash Use to generate scheme id.  

Profit.CreatedSchemeIds

Field Type Description Label
scheme_ids aelf.Hash The scheme ids. repeated

Profit.DistributeProfitsInput

Field Type Description Label
scheme_id aelf.Hash The scheme id to distribute.  
period int64 The period number to distribute, should be the current period.  
amounts_map DistributeProfitsInput.AmountsMapEntry The amount to distribute, symbol -> amount. repeated

Profit.DistributeProfitsInput.AmountsMapEntry

Field Type Description Label
key string    
value int64    

Profit.DistributedProfitsInfo

Field Type Description Label
total_shares int64 The total amount of shares in this scheme at the current period.  
amounts_map DistributedProfitsInfo.AmountsMapEntry The contributed amount in this scheme at the current period. repeated
is_released bool Whether released.  

Profit.DistributedProfitsInfo.AmountsMapEntry

Field Type Description Label
key string    
value sint64    

Profit.GetManagingSchemeIdsInput

Field Type Description Label
manager aelf.Address The manager address.  

Profit.GetProfitAmountInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
symbol string The token symbol.  
beneficiary aelf.Address The beneficiary’s address.  

Profit.GetProfitDetailsInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
beneficiary aelf.Address The address of beneficiary.  

Profit.ProfitDetail

Field Type Description Label
start_period int64 The start period number.  
end_period int64 The end period number.  
shares int64 The weight of the proceeds on the current period of the scheme.  
last_profit_period int64 The last period number that the beneficiary received the profit.  
is_weight_removed bool Whether the weight has been removed.  

Profit.ProfitDetails

Field Type Description Label
details ProfitDetail The profit information. repeated

Profit.ProfitsClaimed

Field Type Description Label
beneficiary aelf.Address The beneficiary’s address claimed.  
symbol string The token symbol claimed.  
amount int64 The amount claimed.  
period int64 The period number claimed.  
claimer_shares int64 The shares of the claimer.  
total_shares int64 The total shares at the current period.  

Profit.ReceivedProfitsMap

Field Type Description Label
value ReceivedProfitsMap.ValueEntry The collection of profits received, token symbol -> amount. repeated

Profit.ReceivedProfitsMap.ValueEntry

Field Type Description Label
key string    
value int64    

Profit.RemoveBeneficiariesInput

Field Type Description Label
beneficiaries aelf.Address The addresses of beneficiary. repeated
scheme_id aelf.Hash The scheme id.  

Profit.RemoveBeneficiaryInput

Field Type Description Label
beneficiary aelf.Address The address of beneficiary.  
scheme_id aelf.Hash The scheme id.  

Profit.RemoveSubSchemeInput

Field Type Description Label
scheme_id aelf.Hash The parent scheme id.  
sub_scheme_id aelf.Hash The sub scheme id.  

Profit.ResetManagerInput

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
new_manager aelf.Address The address of new manager.  

Profit.Scheme

Field Type Description Label
virtual_address aelf.Address The virtual address of the scheme.  
total_shares int64 The total weight of the scheme.  
manager aelf.Address The manager of the scheme.  
current_period int64 The current period.  
sub_schemes SchemeBeneficiaryShare Sub schemes information. repeated
can_remove_beneficiary_directly bool Whether you can directly remove the beneficiary.  
profit_receiving_due_period_count int64 Period of profit distribution.  
is_release_all_balance_every_time_by_default bool Whether all the schemes balance will be distributed during distribution each period.  
scheme_id aelf.Hash The is of the scheme.  
delay_distribute_period_count int32 Delay distribute period.  
cached_delay_total_shares Scheme.CachedDelayTotalSharesEntry Record the scheme’s current total share for deferred distribution of benefits, period -> total shares. repeated
received_token_symbols string The received token symbols. repeated

Profit.Scheme.CachedDelayTotalSharesEntry

Field Type Description Label
key int64    
value int64    

Profit.SchemeBeneficiaryShare

Field Type Description Label
scheme_id aelf.Hash The id of the sub scheme.  
shares int64 The weight of the sub scheme.  

Profit.SchemeCreated

Field Type Description Label
virtual_address aelf.Address The virtual address of the created scheme.  
manager aelf.Address The manager of the created scheme.  
profit_receiving_due_period_count int64 Period of profit distribution.  
is_release_all_balance_every_time_by_default bool Whether all the schemes balance will be distributed during distribution each period.  
scheme_id aelf.Hash The id of the created scheme.  

Profit.SchemePeriod

Field Type Description Label
scheme_id aelf.Hash The scheme id.  
period int64 The period number.  

AElf.Standards.ACS1

acs1.MethodFee

Field Type Description Label
symbol string The token symbol of the method fee.  
basic_fee int64 The amount of fees to be charged.  

acs1.MethodFees

Field Type Description Label
method_name string The name of the method to be charged.  
fees MethodFee List of fees to be charged. repeated
is_size_fee_free bool Optional based on the implementation of SetMethodFee method.  

AElf.Types

aelf.Address

Field Type Description Label
value bytes    

aelf.BinaryMerkleTree

Field Type Description Label
nodes Hash The leaf nodes. repeated
root Hash The root node hash.  
leaf_count int32 The count of leaf node.  

aelf.Hash

Field Type Description Label
value bytes    

aelf.LogEvent

Field Type Description Label
address Address The contract address.  
name string The name of the log event.  
indexed bytes The indexed data, used to calculate bloom. repeated
non_indexed bytes The non indexed data.  

aelf.MerklePath

Field Type Description Label
merkle_path_nodes MerklePathNode The merkle path nodes. repeated

aelf.MerklePathNode

Field Type Description Label
hash Hash The node hash.  
is_left_child_node bool Whether it is a left child node.  

aelf.SInt32Value

Field Type Description Label
value sint32    

aelf.SInt64Value

Field Type Description Label
value sint64    

aelf.ScopedStatePath

Field Type Description Label
address Address The scope address, which will be the contract address.  
path StatePath The path of contract state.  

aelf.SmartContractRegistration

Field Type Description Label
category sint32 The category of contract code(0: C#).  
code bytes The byte array of the contract code.  
code_hash Hash The hash of the contract code.  
is_system_contract bool Whether it is a system contract.  
version int32 The version of the current contract.  

aelf.StatePath

Field Type Description Label
parts string The partial path of the state path. repeated

aelf.Transaction

Field Type Description Label
from Address The address of the sender of the transaction.  
to Address The address of the contract when calling a contract.  
ref_block_number int64 The height of the referenced block hash.  
ref_block_prefix bytes The first four bytes of the referenced block hash.  
method_name string The name of a method in the smart contract at the To address.  
params bytes The parameters to pass to the smart contract method.  
signature bytes When signing a transaction it’s actually a subset of the fields: from/to and the target method as well as the parameter that were given. It also contains the reference block number and prefix.  

aelf.TransactionExecutingStateSet

Field Type Description Label
writes TransactionExecutingStateSet.WritesEntry The changed states. repeated
reads TransactionExecutingStateSet.ReadsEntry The read states. repeated
deletes TransactionExecutingStateSet.DeletesEntry The deleted states. repeated

aelf.TransactionExecutingStateSet.DeletesEntry

Field Type Description Label
key string    
value bool    

aelf.TransactionExecutingStateSet.ReadsEntry

Field Type Description Label
key string    
value bool    

aelf.TransactionExecutingStateSet.WritesEntry

Field Type Description Label
key string    
value bytes    

aelf.TransactionResult

Field Type Description Label
transaction_id Hash The transaction id.  
status TransactionResultStatus The transaction result status.  
logs LogEvent The log events. repeated
bloom bytes Bloom filter for transaction logs. A transaction log event can be defined in the contract and stored in the bloom filter after the transaction is executed. Through this filter, we can quickly search for and determine whether a log exists in the transaction result.  
return_value bytes The return value of the transaction execution.  
block_number int64 The height of the block hat packages the transaction.  
block_hash Hash The hash of the block hat packages the transaction.  
error string Failed execution error message.  

aelf.TransactionResultStatus

Name Number Description
NOT_EXISTED 0 The execution result of the transaction does not exist.
PENDING 1 The transaction is in the transaction pool waiting to be packaged.
FAILED 2 Transaction execution failed.
MINED 3 The transaction was successfully executed and successfully packaged into a block.
CONFLICT 4 When executed in parallel, there are conflicts with other transactions.
PENDING_VALIDATION 5 The transaction is waiting for validation.
NODE_VALIDATION_FAILED 6 Transaction validation failed.

AuthorityInfo

Field Type Description Label
contract_address aelf.Address The contract address of the controller.  
owner_address aelf.Address The address of the owner of the contract.