Hedera
Search…
Create a topic
A transaction that creates a new topic recognized by the Hedera network. The newly generated topic can be referenced by its topicId. The topicId is used to identify a unique topic to submit messages to. You can obtain the new topic ID by requesting the receipt of the transaction. All messages within a topic are sequenced with respect to one another and are provided a unique sequence number.

Private topic

You can also create a private topic where only authorized parties can submit messages to that topic. To create a private topic you would need to set the submitKey property of the transaction. The submitKey value is then shared with the authorized parties and is required to successfully submit messages to the private topic.

Topic Properties

Field
Description
Admin Key
Access control for updateTopic/deleteTopic. Anyone can increase the topic's expirationTime regardless of the adminKey. If no adminKey is specified, updateTopic may only be used to extend the topic's expirationTime, and deleteTopic is disallowed.
Submit Key
Access control for submitMessage. If unspecified, no access control is performed to submit messages (all submissions are allowed).
Topic Memo
Set a short publicly visible memo on the new topic and is stored with the topic. (100 bytes)
Auto Renew Account
Optional account to be used at the topic's expirationTime to extend the life of the topic (once autoRenew functionality is supported by HAPI). The topic lifetime will be extended up to a maximum of the autoRenewPeriod or however long the topic can be extended using all funds on the account (whichever is the smaller duration/amount and if any extension is possible with the account's funds).
Auto Renew Period
The initial lifetime of the topic and the amount of time to attempt to extend the topic's lifetime by automatically at the topic's expirationTime, if the autoRenewAccount is configured (once autoRenew functionality is supported by HAPI).
Transaction Signing Requirements:
    If an admin key is specified, the admin key must sign the transaction
    If not admin key is specified the topic is immutable
    If an auto renew account is specified, that account must also sign this transaction
V2
V1
Constructor
Description
new TopicCreateTransaction()
Initializes the TopicCreateTransaction object
1
new TopicCreateTransaction()
Copied!

Methods

Method
Type
Requirements
setAdminKey(<adminKey>)
Key
Optional
setSubmitKey(<submitKey>)
Key
Optional
setTopicMemo(<memo>)
String
Optional
setAutoRenewAccountId(<accountId>)
AccountId
Disabled
setAutoRenewPeriod(<autoRenewAccountId>)
Duration
Disabled
Java
1
//Create the transaction
2
TopicCreateTransaction transaction = new TopicCreateTransaction();
3
4
//Sign with the client operator private key and submit the transaction to a Hedera network
5
TransactionResponse txResponse = transaction.execute(client);
6
7
//Request the receipt of the transaction
8
TransactionReceipt receipt = txResponse.getReceipt(client);
9
10
//Get the topic ID
11
TopicId newTopicId = receipt.topicId;
12
13
System.out.println("The new topic ID is " + newTopicId);
14
15
//v2.0.0
Copied!
JavaScript
1
//Create the transaction
2
const transaction = new TopicCreateTransaction();
3
4
//Sign with the client operator private key and submit the transaction to a Hedera network
5
const txResponse = await transaction.execute(client);
6
7
//Request the receipt of the transaction
8
const receipt = await txResponse.getReceipt(client);
9
10
//Get the topic ID
11
const newTopicId = receipt.topicId;
12
13
console.log("The new topic ID is " + newTopicId);
14
15
//v2.0.0
Copied!
Go
1
//Create the transaction
2
transaction := hedera.NewTopicCreateTransaction()
3
4
//Sign with the client operator private key and submit the transaction to a Hedera network
5
txResponse, err := transaction.Execute(client)
6
7
if err != nil {
8
panic(err)
9
}
10
11
//Request the receipt of the transaction
12
transactionReceipt, err := txResponse.GetReceipt(client)
13
14
if err != nil {
15
panic(err)
16
}
17
18
//Get the topic ID
19
newTopicID := *transactionReceipt.TopicID
20
21
fmt.Printf("The new topic ID is %v\n", newTopicID)
22
23
//v2.0.0
Copied!
Constructor
Description
new ConsensusTopicCreateTransaction()
Initializes the ConsensusTopicCreateTransaction object
1
new ConsensusTopicCreateTransaction()
Copied!

Methods

Method
Type
Requirements
setAdminKey(<adminKey>)
PublicKey
Optional
setSubmitKey(<submitKey>)
PublicKey
Optional
setTopicMemo(<memo>)
String
Optional
setAutoRenewAccountId(<accountId>)
AccountId
Disabled
setAutoRenewPeriod(<autoRenewAccountId>)
Duration
Disabled
Java
1
//Create the transaction
2
ConsensusTopicCreateTransaction transaction = new ConsensusTopicCreateTransaction();
3
4
//Submit the transaction to a Hedera network, store the transaction ID
5
TransactionId txId = transaction.execute(client);
6
7
//Request the receipt of the transaction
8
TransactionReceipt receipt = txId.getReceipt(client);
9
10
//Get the topic ID
11
ConsensusTopicId newTopicId = receipt.getConsensusTopicId();
12
13
System.out.println("New topic created: " + newTopicId);
Copied!
JavaScript
1
//Create the transaction
2
const transaction = new ConsensusTopicCreateTransaction();
3
4
//Submit the transaction to a Hedera network, store the transaction ID
5
const txId = await transaction.execute(client);
6
7
//Request the receipt of the transaction
8
const receipt = await txId.getReceipt(client);
9
10
//Get the topic ID
11
const newTopicId = receipt.getConsensusTopicId();
12
13
console.log("New topic created: " + newTopicId);
Copied!

Get transaction values

V2
Method
Type
Requirements
getAdminKey(<adminKey>)
Key
Optional
getSubmitKey(<submitKey>)
Key
Optional
getTopicMemo(<memo>)
String
Optional
getAutoRenewAccountId(<accountId>)
AccountId
Disabled
getAutoRenewPeriod(<autoRenewAccountId>)
Duration
Disabled
Java
1
//Create the transaction
2
TopicCreateTransaction transaction = new TopicCreateTransaction()
3
.setAdminKey(adminKey);
4
5
//Get the admin key from the transaction
6
Key getKey = transaction.getAdminKey();
7
8
//V2.0.0
Copied!
JavaScript
1
//Create the transaction
2
const transaction = await TopicCreateTransaction()
3
.setAdminKey(adminKey);
4
5
//Get the admin key from the transaction
6
const getKey = transaction.getAdminKey();
Copied!
Go
1
//Create the transaction
2
transaction := hedera.NewTopicCreateTransaction().
3
SetAdminKey(adminKey)
4
5
getKey := transaction.GetAdminKey()
6
7
//V2.0.0
Copied!

Last modified 6d ago
Copy link