AElf.Sdk.CSharp¶
Contents¶
- BoolState
- BytesState
- CSharpSmartContractContext
- ChainId
- CurrentBlockTime
- CurrentHeight
- Origin
- PreviousBlockHash
- Self
- Sender
- StateProvider
- TransactionId
- Variables
- Transaction
- Call(fromAddress,toAddress,methodName,args)
- ConvertHashToInt64(hash,start,end)
- ConvertVirtualAddressToContractAddress(virtualAddress)
- ConvertVirtualAddressToContractAddress(virtualAddress,contractAddress)
- ConvertVirtualAddressToContractAddressWithContractHashName(virtualAddress)
- ConvertVirtualAddressToContractAddressWithContractHashName(virtualAddress,contractAddress)
- DeployContract(address,registration,name)
- FireLogEvent(logEvent)
- GenerateId(contractAddress,bytes)
- GetContractAddressByName(hash)
- GetPreviousBlockTransactions()
- GetRandomHash(fromHash)
- GetSystemContractNameToAddressMapping()
- GetZeroSmartContractAddress()
- GetZeroSmartContractAddress(chainId)
- LogDebug(func)
- RecoverPublicKey()
- Transaction()
- SendInline(toAddress,methodName,args)
- SendVirtualInline(fromVirtualAddress,toAddress,methodName,args)
- SendVirtualInlineBySystemContract(fromVirtualAddress,toAddress,methodName,args)
- UpdateContract(address,registration,name)
- ValidateStateSize(obj)
- VerifySignature(tx)
- CheckContractVersion(previousContractVersion,registration)
- DeploySmartContract(address,registration,name)
- UpdateSmartContract(address,registration,name,previousContractVersion)
- CSharpSmartContract
- ContractState
- Int32State
- Int64State
- MappedState
- SingletonState
- SmartContractBridgeContextExtensions
- Call(context,address,methodName,message)
- Call(context,address,methodName,message)
- Call(context,fromAddress,toAddress,methodName,message)
- Call(context,address,methodName,message)
- ConvertToByteString(message)
- ConvertVirtualAddressToContractAddress(this,virtualAddress)
- ConvertVirtualAddressToContractAddressWithContractHashName(this,virtualAddress)
- Fire(context,eventData)
- GenerateId(this,bytes)
- GenerateId(this,token)
- GenerateId(this,token)
- GenerateId(this)
- GenerateId(this,address,token)
- SendInline(context,toAddress,methodName,message)
- SendInline(context,toAddress,methodName,message)
- SendVirtualInline(context,fromVirtualAddress,toAddress,methodName,message)
- SmartContractConstants
- StringState
- UInt32State
- UInt64State
BoolState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Wrapper around boolean values for use in smart contract state.
BytesState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Wrapper around byte arrays for use in smart contract state.
CSharpSmartContractContext type
¶
Namespace¶
AElf.Sdk.CSharp
Summary¶
Represents the transaction execution context in a smart contract. An instance of this class is present in the base class for smart contracts (Context property). It provides access to properties and methods useful for implementing the logic in smart contracts.
CurrentHeight property
¶
Summary¶
The height of the block that contains the transaction currently executing.
Origin property
¶
Summary¶
The address of the sender (signer) of the transaction being executed. It’s type is an AElf address. It corresponds to the From field of the transaction. This value never changes, even for nested inline calls. This means that when you access this property in your contract, it’s value will be the entity that created the transaction (user or smart contract through an inline call).
PreviousBlockHash property
¶
Summary¶
The hash of the block that precedes the current in the blockchain structure.
Self property
¶
Summary¶
The address of the contract currently being executed. This changes for every transaction and inline transaction.
Call(fromAddress,toAddress,methodName,args) method
¶
Summary¶
Calls a method on another contract.
Returns¶
The result of the call.
Parameters¶
Name | Type | Description |
---|---|---|
fromAddress | AElf.Types.Address | The address to use as sender. |
toAddress | AElf.Types.Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to call. |
args | Google.Protobuf.ByteString | The input arguments for calling that method. This is usually generated from the protobuf |
definition of the input type |
Generic Types¶
Name | Description |
---|---|
T | The type of the return message. |
ConvertHashToInt64(hash,start,end) method
¶
Summary¶
Converts the input hash to a 64-bit signed integer.
Returns¶
The 64-bit signed integer.
Parameters¶
Name | Type | Description |
---|---|---|
hash | AElf.Types.Hash | The hash. |
start | System.Int64 | The inclusive lower bound of the number returned. |
end | System.Int64 | The exclusive upper bound of the number returned. endValue must be greater than or equal to startValue. |
Exceptions¶
Name | Description |
---|---|
System.ArgumentException | startValue is less than 0 or greater than endValue. |
ConvertVirtualAddressToContractAddress(virtualAddress) method
¶
Summary¶
Converts a virtual address to a contract address.
Returns¶
The converted address.
Parameters¶
Name | Type | Description |
---|---|---|
virtualAddress | AElf.Types.Hash | The virtual address that want to convert. |
ConvertVirtualAddressToContractAddress(virtualAddress,contractAddress) method
¶
Summary¶
Converts a virtual address to a contract address with the contract address.
Returns¶
The converted address.
Parameters¶
Name | Type | Description |
---|---|---|
virtualAddress | AElf.Types.Hash | The virtual address that want to convert. |
contractAddress | AElf.Types.Address | The contract address. |
ConvertVirtualAddressToContractAddressWithContractHashName(¶
virtualAddress) method
¶
Summary¶
Converts a virtual address to a contract address with the current contract hash name.
Returns¶
The converted address.
Parameters¶
Name | Type | Description |
---|---|---|
virtualAddress | AElf.Types.Hash | The virtual address that want to convert. |
ConvertVirtualAddressToContractAddressWithContractHashName(¶
virtualAddress,contractAddress) method
¶
Summary¶
Converts a virtual address to a contract address with the contract hash name.
Returns¶
Parameters¶
Name | Type | Description |
---|---|---|
virtualAddress | AElf.Types.Hash | The virtual address that want to convert. |
contractAddress | AElf.Types.Address | The contract address. |
DeployContract(address,registration,name) method
¶
Summary¶
Deploy a new smart contract (only the genesis contract can call it).
Parameters¶
Name | Type | Description |
---|---|---|
address | AElf.Types.Address | The address of new smart contract. |
registration | AElf.Types.SmartContractRegistration | The registration of the new smart contract. |
name | AElf.Types.Hash | The hash value of the smart contract name. |
FireLogEvent(logEvent) method
¶
Summary¶
This method is used to produce logs that can be found in the transaction result after execution.
Parameters¶
Name | Type | Description |
---|---|---|
logEvent | AElf.Types.LogEvent | The event to fire. |
GenerateId(contractAddress,bytes) method
¶
Summary¶
Generate a hash type id based on the contract address and the bytes.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
contractAddress | AElf.Types.Address | The contract address on which the id generation is based. |
bytes | System.Collections. Generic.IEnumerable {System.Byte} | The bytes on which the id generation is based. |
GetContractAddressByName(hash) method
¶
Summary¶
It’s sometimes useful to get the address of a system contract. The input is a hash of the system contracts name. These hashes are easily accessible through the constants in the SmartContractConstants.cs file of the C# SDK.
Returns¶
The address of the system contract.
Parameters¶
Name | Type | Description |
---|---|---|
hash | AElf.Types.Hash | The hash of the name. |
GetPreviousBlockTransactions() method
¶
Summary¶
Returns the transaction included in the previous block (previous to the one currently executing).
Returns¶
A list of transaction.
Parameters¶
This method has no parameters.
GetRandomHash(fromHash) method
¶
Summary¶
Gets a random hash based on the input hash.
Returns¶
Random hash.
Parameters¶
Name | Type | Description |
---|---|---|
fromHash | AElf.Types.Hash | Hash. |
GetSystemContractNameToAddressMapping() method
¶
Summary¶
Get the mapping that associates the system contract addresses and their name’s hash.
Returns¶
The addresses with their hashes.
Parameters¶
This method has no parameters.
GetZeroSmartContractAddress() method
¶
Summary¶
This method returns the address of the Genesis contract (smart contract zero) of the current chain.
Returns¶
The address of the genesis contract.
Parameters¶
This method has no parameters.
GetZeroSmartContractAddress(chainId) method
¶
Summary¶
This method returns the address of the Genesis contract (smart contract zero) of the specified chain.
Returns¶
The address of the genesis contract, for the given chain.
Parameters¶
Name | Type | Description |
---|---|---|
chainId | System.Int32 | The chain’s ID. |
LogDebug(func) method
¶
Summary¶
Application logging - when writing a contract it is useful to be able to log some elements in the applications log file to simplify development. Note that these logs are only visible when the node executing the transaction is build in debug mode.
Parameters¶
Name | Type | Description |
---|---|---|
func | System.Func {System.String} | The logic that will be executed for logging purposes. |
RecoverPublicKey() method
¶
Summary¶
Recovers the public key of the transaction Sender.
Returns¶
A byte array representing the public key.
Parameters¶
This method has no parameters.
SendInline(toAddress,methodName,args) method
¶
Summary¶
Sends an inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
toAddress | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
args | Google.Protobuf .ByteString | The input arguments for calling that method. This is usually generated from the protobuf |
definition of the input type. |
SendVirtualInline(fromVirtualAddress,toAddress,methodName,args) method
¶
Summary¶
Sends a virtual inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
fromVirtualAddress | AElf.Types.Hash | The virtual address to use as sender. |
toAddress | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
args | Google.Protobuf .ByteString | The input arguments for calling that method. This is usually generated from the protobuf |
definition of the input type. |
SendVirtualInlineBySystemContract(fromVirtualAddress,toAddress,¶
methodName,args) method
¶
Summary¶
Like SendVirtualInline but the virtual address us a system smart contract.
Parameters¶
Name | Type | Description |
---|---|---|
fromVirtualAddress | AElf.Types.Hash | Sends a virtual inline transaction to another contract. This method is only available to system smart contract. |
toAddress | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
args | Google.Protobuf .ByteString | The input arguments for calling that method. This is usually generated from the protobuf |
definition of the input type. |
UpdateContract(address,registration,name) method
¶
Summary¶
Update a smart contract (only the genesis contract can call it).
Parameters¶
Name | Type | Description |
---|---|---|
address | AElf.Types.Address | The address of smart contract to update. |
registration | AElf.Types.SmartContractRegistration | The registration of the smart contract to update. |
name | AElf.Types.Hash <#T-AElf-Types-Hash> | The hash value of the smart contract name to update. |
ValidateStateSize(obj) method
¶
Summary¶
Verify that the state size is within the valid value.
Returns¶
The state.
Parameters¶
Name | Type | Description |
---|---|---|
obj | System.Object | The state. |
Exceptions¶
Name | Description |
---|---|
AElf.Kernel.SmartContract.StateOverSizeException | The state size exceeds the limit. |
VerifySignature(tx) method
¶
Summary¶
Returns whether or not the given transaction is well formed and the signature is correct.
Returns¶
The verification results.
Parameters¶
Name | Type | Description |
---|---|---|
tx | AElf.Types.Transaction | The transaction to verify. |
CheckContractVersion(previousContractVersion,registration) method
¶
Summary¶
Check the contract version when updating the contract. (only the genesis contract can call it).
Returns¶
Name | Type | Description |
---|---|---|
IsSubsequentVersion | System.Boolean | Whether the contract version is a subsequent version. |
Parameters¶
Name | Type | Description |
---|---|---|
previousContractVersion | System.String | The previous contract version. |
registration | AElf.Types.SmartContractRegistration | The registration of the smart contract to update. |
DeploySmartContract(address,registration,name) method
¶
Summary¶
Deploy a new smart contract with contract version(only the genesis contract can call it).
Returns¶
Name | Type | Description |
---|---|---|
ContractVersion | System.String | The verison of smart contract to update. |
IsSubsequentVersion | System.boolean | Whether the contract version is a subsequent version |
Parameters¶
Name | Type | Description |
---|---|---|
address | AElf.Types.Address | The address of new smart contract. |
name | AElf.Types.Hash | The hash value of the smart contract name. |
registration | AElf.Types.SmartContractRegistration | The registration of the smart contract to update. |
UpdateSmartContract(address,registration,name,previousContractVersion) method
¶
Summary¶
Update a smart contract with contract version (only the genesis contract can call it).
Returns¶
Name | Type | Description |
---|---|---|
ContractVersion | System.String | The verison of smart contract to update. |
IsSubsequentVersion | System.Boolean | Whether the contract version is a subsequent version. |
Parameters¶
Name | Type | Description |
---|---|---|
address | AElf.Types.Address | The address of smart contract to update. |
name | AElf.Types.Hash | The hash value of the smart contract name to update. |
registration | AElf.Types.SmartContractRegistration | The registration of the smart contract to update. |
previousContractVersion | System.String | The previous contract version. |
CSharpSmartContract type
¶
Namespace¶
AElf.Sdk.CSharp
Summary¶
This class represents a base class for contracts written in the C# language. The generated code from the protobuf definitions will inherit from this class.
Generic Types¶
Name | Description |
---|---|
TContractState |
Context property
¶
Summary¶
Represents the transaction execution context in a smart contract. It provides access inside the contract to properties and methods useful for implementing the smart contracts action logic.
State property
¶
Summary¶
Provides access to the State class instance. TContractState is the type of the state class defined by the contract author.
ContractState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Base class for the state class in smart contracts.
Int32State type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Wrapper around 32-bit integer values for use in smart contract state.
Int64State type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Wrapper around 64-bit integer values for use in smart contract state.
MappedState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Key-value pair data structure used for representing state in contracts.
Generic Types¶
Name | Description |
---|---|
TKey | The type of the key. |
TEntity | The type of the value. |
SingletonState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Represents single values of a given type, for use in smart contract state.
SmartContractBridgeContextExtensions type
¶
Namespace¶
AElf.Sdk.CSharp
Summary¶
Extension methods that help with the interactions with the smart contract execution context.
Call(context,address,methodName,message) method
¶
Summary¶
Calls a method on another contract.
Returns¶
The return value of the call.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Kernel.SmartContract. ISmartContractBridgeContext | The virtual address of the system. contract to use as sender. |
address | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to call. |
message | Google.Protobuf.ByteString | The input arguments for calling that method. This is usually generated from the protobuf |
definition of the input type. |
Generic Types¶
Name | Description |
---|---|
T | The return type of the call. |
Call(context,address,methodName,message) method
¶
Summary¶
Calls a method on another contract.
Returns¶
The result of the call.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Sdk.CSharp.CSharpSmartContractContext | An instance of ISmartContractBridgeContext |
address | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to call. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
Generic Types¶
Name | Description |
---|---|
T | The type of the return message. |
Call(context,fromAddress,toAddress,methodName,message) method
¶
Summary¶
Calls a method on another contract.
Returns¶
The result of the call.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Sdk.CSharp.CSharpSmartContractContext | An instance of ISmartContractBridgeContext |
fromAddress | AElf.Types. Address | The address to use as sender. |
toAddressvv | AElf.Types. Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to call. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
Generic Types¶
Name | Description |
---|---|
T | The type of the return message. |
Call(context,address,methodName,message) method
¶
Summary¶
Calls a method on another contract.
Returns¶
The result of the call.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Sdk.CSharp.CSharpSmartContractContext | An instance of ISmartContractBridgeContext |
address | AElf.Types. Address | The address to use as sender. |
methodName | System.String | The name of method you want to call. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
Generic Types¶
Name | Description |
---|---|
T | The type of the return message. |
ConvertToByteString(message) method
¶
Summary¶
Serializes a protobuf message to a protobuf ByteString.
Returns¶
ByteString.Empty if the message is null
Parameters¶
Name | Type | Description |
---|---|---|
message | Google.Protobuf.IMessage | The message to serialize. |
ConvertVirtualAddressToContractAddress(this,virtualAddress) method
¶
Summary¶
Converts a virtual address to a contract address.
Returns¶
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
virtualAddress | AElf.Types.Hash Address | The virtual address that want to convert. |
ConvertVirtualAddressToContractAddressWithContractHashName(this,¶
virtualAddress) method
¶
Summary¶
Converts a virtual address to a contract address with the currently running contract address.
Returns¶
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
virtualAddress | AElf.Types.Hash Address | The virtual address that want to convert. |
Fire(context,eventData) method
¶
Summary¶
Logs an event during the execution of a transaction. The event type is defined in the AElf.CSharp.core project.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Sdk.CSharp.CSharpSmartContractContext | An instance of ISmartContractBridgeContext |
eventData | The event to log. |
Generic Types¶
Name | Description |
---|---|
T | The type of the event. |
GenerateId(this,bytes) method
¶
Summary¶
Generate a hash type id based on the currently running contract address and the bytes.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
bytes | System.Collections.Generic .IEnumerable{System.Byte} | The bytes on which the id generation is based. |
GenerateId(this,token) method
¶
Summary¶
Generate a hash type id based on the currently running contract address and the token.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
token | System.String | The token on which the id generation is based. |
GenerateId(this,token) method
¶
Summary¶
Generate a hash type id based on the currently running contract address and the hash type token.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
token | AElf.Types.Hash | The hash type token on which the id generation is based. |
GenerateId(this) method
¶
Summary¶
Generate a hash type id based on the currently running contract address.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
GenerateId(this,address,token) method
¶
Summary¶
Generate a hash type id based on the address and the bytes.
Returns¶
The generated hash type id.
Parameters¶
Name | Type | Description |
---|---|---|
this | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
address | AElf.Types.Address | The address on which the id generation is based. |
token | AElf.Types.Hash | The hash type token on which the id generation is based. |
SendInline(context,toAddress,methodName,message) method
¶
Summary¶
Sends an inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
toAddress | AElf.Types.Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
SendInline(context,toAddress,methodName,message) method
¶
Summary¶
Sends a virtual inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
toAddress | AElf.Types.Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
SendVirtualInline(context,fromVirtualAddress,toAddress,methodName,¶
message) method
¶
Summary¶
Sends a virtual inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
fromVirtualAddress | AElf.Types.Hash | The virtual address to use as sender. |
toAddress | AElf.Types.Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
SendVirtualInline(context,fromVirtualAddress,toAddress,methodName,¶
message) method
¶
Summary¶
Sends a virtual inline transaction to another contract.
Parameters¶
Name | Type | Description |
---|---|---|
context | AElf.Kernel.SmartContract. ISmartContractBridgeContext | An instance of ISmartContractBridgeContext |
fromVirtualAddress | AElf.Types.Hash | The virtual address to use as sender. |
toAddress | AElf.Types.Address | The address of the contract you’re seeking to interact with. |
methodName | System.String | The name of method you want to invoke. |
message | Google.Protobuf.ByteString | The protobuf message that will be the input to the call. |
SmartContractConstants type
¶
Namespace¶
AElf.Sdk.CSharp
Summary¶
Static class containing the hashes built from the names of the contracts.
StringState type
¶
Namespace¶
AElf.Sdk.CSharp.State
Summary¶
Wrapper around string values for use in smart contract state.