#
Setting Witness Properties
The Witness Set Properties Operation allows witnesses to update their properties on the Hive blockchain.
#
Setting Default Witness Properties
Test it yourself: src/typescript/transaction/operations/witness-set-properties/default-witness-properties.ts
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);
Test it yourself on github codespace: src/static/snippets/src/python/transaction/operations/witness_set_properties/default_witness_set_properties.py
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);
Test it yourself on github codespace: src/python/transaction/operations/witness_set_properties/set_explicit.py
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"
}
}
}
]
}