# Validator Calls

### Create validator

Create a new validator

Current minimum stake is `sfcc.minSelfStake()`

`pubkey` is a public key used to authenticate future validator's consensus messages. `pubkey` cannot be changed after the call.

#### Pubkey format

`pubkey` MUST be the canonical lachesis-base wire format: 66 bytes, beginning with the `0xc0` Secp256k1 type-byte followed by a 65-byte uncompressed secp256k1 public key (`0x04` marker + 32-byte X coordinate + 32-byte Y coordinate). As a hex string with the `0x` prefix that is 134 characters total: `0xc004` + 128 hex characters.

The canonical way to obtain a correctly-shaped pubkey is to run `./opera validator new` (see [Become a validator](/vinuchain/technical-docs/vinuchain-mainnet/become-a-validator.md#create-the-validator-wallet)). Copy the value labeled `Public key:` byte-for-byte — opera always emits the canonical format.

**Do not** construct the pubkey by other means. Submitting a 65-byte payload that begins with `0x04` (the bare uncompressed key without the `0xc0` type-byte) is the most common failure mode — it superficially looks like an ECDSA pubkey but is not the format lachesis-base verifies signatures against. A validator admitted with that shape produces no verifiable consensus events, earns zero uptime, and any stake delegated to it earns zero rewards.

As of `v2.0.14-elemont` (testnet) / Cycle-161 SFC bytecode, `createValidator` rejects `pubkey.length != 66` with `"invalid pubkey length"` and `pubkey[0] != 0xc0` with `"invalid pubkey type"`.

The call creates a self-delegation with the specified amount. Validator uses the same calls as other delegators. Visit [delegation calls](https://vita-inu.gitbook.io/vinuchain/technical-guides/validators-nodes/delegation-calls), [reward calls](https://vita-inu.gitbook.io/vinuchain/technical-guides/validators-nodes/reward-calls), [stake lockup calls](https://vita-inu.gitbook.io/vinuchain/technical-guides/validators-nodes/stake-lockup-calls) for additional details.

```
sfcc.createValidator("0xc004...", {from:"0xAddress", value: web3.toWei("amount", "vc")})
```

#### **Checks**

* Self-stake amount is greater or equal to `sfcc.minSelfStake()`
* This address wasn't used for other validator
* `pubkey.length == 66` (rejects payloads of any other length)
* `pubkey[0] == 0xc0` (rejects payloads with any other type-byte, including the 65-byte `0x04`-prefixed bare uncompressed-secp256k1 shape)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vinu.gitbook.io/vinuchain/technical-docs/nodes-and-validators/validator-calls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
