48 SoulPoint Benefits
Limitation by Membership Level
The following documentation describes the access permissions and conditions for users at different levels of 48 SoulPoint membership. Users are classified into several levels, each with different access conditions based on the number of 48SoulPoints held HODL.
Access Conditions Table
Unsigned Guest
50 cond txs / 9s
5 txs / bundle
-
Signed Guest (< 48 SP)
50 cond txs / 9s
6 txs / bundle
Failure detail, Websocket RPC
Entry (≥ 48 SP)
100 cond txs / 9s
10 txs / bundle
Failure detail, Websocket RPC
Gold (≥ 100 SP)
200 cond txs / 9s
15 txs / bundle
Failure detail, Websocket RPC
Platinum (≥ 480 SP)
500 cond txs / 9s
50 txs / bundle
Failure detail, Websocket RPC
Explanation of Terms
Cond Txs: Represents the maximum number of ongoing (currently being simulated) and failed transactions permissible within a 9-second time window. This count includes bundle-transactions and private-transaction-services.
Failure detail: When a bundle simulation fails, the RPC provides specific reasons for the failure instead of a generic "bundle execution failed" message. For example, an error could be detailed as: "[0xc5b2..a2eb] execution reverted due to insufficient funds for gas * price + value: available balance is 7195, but transaction cost is 7840, resulting in an overshot of 645."
Websocket RPC: Enables the bundles and private transactions sending through a websocket connection.
Signing Method (For Go, use the code blow)
package types
import (
"bytes"
"crypto/ecdsa"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto"
)
type SendBundleArgs struct {
Txs []hexutil.Bytes `json:"txs"`
MaxBlockNumber uint64 `json:"maxBlockNumber"`
MinTimestamp *uint64 `json:"minTimestamp"`
MaxTimestamp *uint64 `json:"maxTimestamp"`
RevertingTxHashes []common.Hash `json:"revertingTxHashes"`
SoulPointSignature hexutil.Bytes `json:"48spSign"` // <<<<<<------ This is the 48SP signature
}
// Sign48SPMember signs the hash concatenation of the hashes of the given transactions with the given private key.
// private key is the private key of the soul point member
func Sign48SPMember(prvKey *ecdsa.PrivateKey, txs []*Transaction) (hexutil.Bytes, error) {
var hashes bytes.Buffer
hashes.Grow(common.HashLength * len(txs))
for _, tx := range txs {
hashes.Write(tx.Hash().Bytes())
}
return crypto.Sign(crypto.Keccak256(hashes.Bytes()), prvKey)
}Signature Result Verification
Last updated
