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

Membership Level
RateLimit
Bundle Limit
Additional

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

For other programming languages, we do not provide code examples. Please use the following example to verify that your signature method is correct.

Last updated