# Setting Witness Properties

The Witness Set Properties Operation allows witnesses to update their properties on the Hive blockchain.

# Setting Default Witness Properties

import { createHiveChain, WitnessSetPropertiesOperation } from '@hiveio/wax';

// Initialize hive chain interface
const chain = await createHiveChain();

// Initialize a transaction object
const tx = await chain.createTransaction();

const owner = 'witness-account';
const { publicKey1 } = globalThis.snippetsBeekeeperData;

tx.pushOperation(new WitnessSetPropertiesOperation({
  owner,
  witnessSigningKey: publicKey1,
}));

/*
Get a transaction object holding all operations and transaction
TAPOS & expiration data, but transaction is **not signed yet**
*/
console.log(tx.transaction);
import asyncio

from wax import create_hive_chain
from wax.complex_operations.witness_set_properties import WitnessSetProperties, WitnessSetPropertiesData


async def main():
    # Initialize hive chain interface
    chain = create_hive_chain()

    # Initialize a transaction object
    tx = await chain.create_transaction()

    tx.push_operation(
        WitnessSetProperties(
            data=WitnessSetPropertiesData(
                owner="witness-account", witness_signing_key="STM4utwdRemiWrprD4aZantE8CVRnxRRZShz68W5SoDfZinfhCmSA"
            )
        )
    )

    # Get a transaction object holding all operations and transaction
    # TAPOS & expiration data, but transaction is **not signed yet**
    print(tx.to_string())


asyncio.run(main())
{
  "ref_block_num": 50355,
  "ref_block_prefix": 2819025043,
  "expiration": "2025-09-09T10:22:31",
  "operations": [
    {
      "witness_set_properties_operation": {
        "owner": "witness-account",
        "props": {
          "key": "020331b0a4dfd5d160aff217aaa98b765f56bc9254cef83f198e1f17ea892a4df3"
        }
      }
    }
  ]
}

# Setting Explicit Witness Properties

As with all operation classes, you can set all the optional fields on a single class instance.

import { createHiveChain, WitnessSetPropertiesOperation } from '@hiveio/wax';

// Initialize hive chain interface
const chain = await createHiveChain();

const owner = "witness-account";
const { publicKey1 } = globalThis.snippetsBeekeeperData;
const maxBlockSize = 65536;
const hbdInterestRate = 750; // 7.5%
const accountCreationFee = chain.hiveCoins(5); // 5.000 HIVE
const witnessUrl = "https://witness.example.com";

// Initialize a transaction object
const tx = await chain.createTransaction();

tx.pushOperation(new WitnessSetPropertiesOperation({
    owner,
    witnessSigningKey: publicKey1,
    maximumBlockSize: maxBlockSize,
    hbdInterestRate,
    accountCreationFee,
    url: witnessUrl
}));

/*
Get a transaction object holding all operations and transaction
TAPOS & expiration data, but transaction is **not signed yet**
*/
console.log(tx.transaction);
import asyncio

from wax import create_hive_chain
from wax.complex_operations.witness_set_properties import WitnessSetProperties, WitnessSetPropertiesData


async def main():
    # Initialize hive chain interface
    chain = create_hive_chain()

    # Initialize a transaction object
    tx = await chain.create_transaction()

    # Add a witness set properties operation to the transaction
    tx.push_operation(
        WitnessSetProperties(
            data=WitnessSetPropertiesData(
                owner="witness-account",
                witness_signing_key="STM4utwdRemiWrprD4aZantE8CVRnxRRZShz68W5SoDfZinfhCmSA",
                maximum_block_size=65536,  # Maximum block size in bytes
                hbd_interest_rate=750,  # HBD interest rate as a percentage (7.5%)
                account_creation_fee=chain.hive.coins(1),  # Fee for account creation in Hive coins
                url="https://witness.example.com",
            )
        )
    )

    # Get a transaction object holding all operations and transaction
    # TAPOS & expiration data, but transaction is **not signed yet**
    print(tx.to_string())


asyncio.run(main())
{
  "ref_block_num": 50303,
  "ref_block_prefix": 1313275612,
  "expiration": "2025-09-09T10:19:54",
  "operations": [
    {
      "witness_set_properties_operation": {
        "owner": "witness-account",
        "props": {
          "key": "020331b0a4dfd5d160aff217aaa98b765f56bc9254cef83f198e1f17ea892a4df3",
          "hbd_interest_rate": "ee02",
          "maximum_block_size": "00000100",
          "account_creation_fee": "e8030000000000002320bcbe",
          "url": "1b68747470733a2f2f7769746e6573732e6578616d706c652e636f6d"
        }
      }
    }
  ]
}