Hedera
Search…
Create a file
A transaction that creates a new file on a Hedera network. The file is referenced by its file ID which can be obtained from the receipt or record once the transaction reaches consensus on a Hedera network. The file does not have a file name. If the file is too big to create with a single FileCreateTransaction(), the file can be appended with the remaining content multiple times using the FileAppendTransaction().
The maximum file size is 1,024 kB.
Transaction Signing Requirements
    The key on the file is required to sign the transaction if different than the client operator account key

File Properties

Field
Description
Key(s)
Set the keys which must sign any transactions modifying this file (the owner(s) of the file). All keys must sign to modify the file's contents or keys. No key is required to sign for extending the expiration time (except the one for the operator account paying for the transaction). The network currently requires a file to have at least one key (or key list or threshold key) but this requirement may be lifted in the future.
Contents
The contents of the file. The file contents can be recovered from requesting the FileContentsQuery. Note that the total size for a given transaction is limited to 6KiB (as of March 2020) by the network; if you exceed this you may receive a TRANSACTION_OVERSIZE error.
Expiration Time
Set the instant at which this file will expire, after which its contents will no longer be available. Defaults to 1/4 of a Julian year from the instant was invoked.
Memo
Short publicly visible memo about the file. No guarantee of uniqueness. (100 characters max)

Methods

Constructor
Description
new FileCreateTransaction()
Initializes the FileCreateTransaction object
1
new FileCreateTransaction()
Copied!
The default max transaction fee (1 hbar) is not enough to create a a file. Use setMaxTransactionFee()to change the default max transaction fee from 1 hbar to 2 hbars.
V2
V1
Method
Type
Requirement
setKeys(<keys>)
Key
Required
setContents(<contents>)
String
Optional
setContents(<bytes>)
bytes [ ]
Optional
setExpirationTime(<expirationTime>)
Instant
Optional
setFileMemo(<memo>)
String
Optional
Java
1
//Create the transaction
2
FileCreateTransaction transaction = new FileCreateTransaction()
3
.setKeys(fileKey)
4
.setContents(fileContents);
5
6
//Change the default max transaction fee to 2 hbars
7
FileCreateTransaction modifyMaxTransactionFee = transaction.setMaxTransactionFee(new Hbar(2));
8
9
//Prepare transaction for signing, sign with the key on the file, sign with the client operator key and submit to a Hedera network
10
TransactionResponse txResponse = modifyMaxTransactionFee.freezeWith(client).sign(fileKey).execute(client);
11
12
//Request the receipt
13
TransactionReceipt receipt = txResponse.getReceipt(client);
14
15
//Get the file ID
16
FileId newFileId = receipt.fileId;
17
18
System.out.println("The new file ID is: " + newFileId);
19
20
//v2.0.0
Copied!
JavaScript
1
//Create the transaction
2
const transaction = await new FileCreateTransaction()
3
.setKeys([filePublicKey]) //A different key then the client operator key
4
.setContents("the file contents")
5
.setMaxTransactionFee(new Hbar(2))
6
.freezeWith(client);
7
8
//Sign with the file private key
9
const signTx = await transaction.sign(fileKey);
10
11
//Sign with the client operator private key and submit to a Hedera network
12
const submitTx = await signTx.execute(client);
13
14
//Request the receipt
15
const receipt = await submitTx.getReceipt(client);
16
17
//Get the file ID
18
const newFileId = receipt.fileId;
19
20
console.log("The new file ID is: " + newFileId);
21
22
//v2.0.7
Copied!
Go
1
//Create the transaction
2
transaction := hedera.NewFileCreateTransaction().
3
SetKeys(filePublicKey).
4
SetContents([]byte("Hello, World"))
5
6
//Change the default max transaction fee to 2 hbars
7
modifyMaxTransactionFee := transaction.SetMaxTransactionFee(hedera.HbarFrom(2, hedera.HbarUnits.Hbar))
8
9
//Prepare transaction for signing,
10
freezeTransaction, err := modifyMaxTransactionFee.FreezeWith(client)
11
if err != nil {
12
panic(err)
13
}
14
15
//Sign with the key on the file, sign with the client operator key and submit to a Hedera network
16
txResponse, err := freezeTransaction.Sign(fileKey).Execute(client)
17
if err != nil {
18
panic(err)
19
}
20
21
//Request the receipt
22
receipt, err := txResponse.GetReceipt(client)
23
if err != nil {
24
panic(err)
25
}
26
27
//Get the file ID
28
newFileId := *receipt.FileID
29
30
fmt.Printf("The new file ID is %v\n", newFileId)
31
//v2.0.0
Copied!
Method
Type
Description
Requirement
addKey(<key>)
​PublicKey​
The public key of the owner of the file
Required
setContents(<contents>)
bytes[]
The file contents in byte representation
Optional
setContents(<contents>)
String
The file contents in string representation
Optional
setExpirationTime(<expiration>)
Instant
The time at which this file should expire (unless FileUpdateTransaction is used before then to extend its life)
Optional
Java
1
//Create the transaction
2
FileCreateTransaction transaction = new FileCreateTransaction()
3
.addkey(fileKey)
4
.setContents(fileContents);
5
6
//Change the default max transaction fee to 2 hbars
7
FileCreateTransaction modifyMaxTransactionFee = transaction.setMaxTransactionFee(new Hbar(2));
8
9
//Prepare transaction for signing, sign with the key on the file, sign with the client operator key and submit to a Hedera network
10
TransactionId txId = modifyMaxTransactionFee.build(client).sign(fileKey).execute(client);
11
12
//Request the receipt
13
TransactionReceipt receipt = txId.getReceipt(client);
14
15
//Get the file ID
16
FileId newFileId = receipt.getFileId();
17
18
System.out.println("The new file ID is: " + newFileId);
19
20
//v1.3.2
Copied!
JavaScript
1
//Create the transaction
2
const transaction = new FileCreateTransaction()
3
.addkey(fileKey)
4
.setContents(fileContents);
5
6
//Change the default max transaction fee to 2 hbars
7
const modifyMaxTransactionFee = transaction.setMaxTransactionFee(new Hbar(2));
8
9
//Prepare transaction for signing, sign with the key on the file, sign with the client operator key and submit to a Hedera network
10
const txId = await modifyMaxTransactionFee.build(client).sign(fileKey).execute(client);
11
12
//Request the receipt
13
const receipt = await txId.getReceipt(client);
14
15
//Get the file ID
16
const newFileId = receipt.getFileId();
17
18
console.log("The new file ID is: " + newFileId);
19
20
//v1.4.4
Copied!

Get transaction values

V2
V1
Method
Type
Requirement
getKeys()
Key
Optional
getContents()
ByteString
Optional
getExpirationTime()
Instant
Optional
getFileMemo()
String
Optional
Java
1
//Create the transaction
2
FileCreateTransaction transaction = new FileCreateTransaction()
3
.setKeys(key)
4
.setContents(fileContents);
5
6
//Get the file contents
7
ByteString getContents = transaction.getContents();
Copied!
JavaScript
1
//Create the transaction
2
const transaction = new FileCreateTransaction()
3
.setKeys(key)
4
.setContents(fileContents);
5
6
//Get the file contents
7
const getContents = transaction.getContents();
Copied!
Go
1
//Create the transaction
2
transaction := hedera.NewFileCreateTransaction().
3
SetKeys(filePublicKey).
4
SetContents([]byte("Hello, World"))
5
6
//Get the file contents
7
getContents := transaction.GetContents()
Copied!
Method
Type
Description
Requirement
addKey(<key>)
​Ed25519PublicKey​
The public key of the owner of the file
setContents(<contents>)
bytes[]
The file contents
setExpirationTime(<expiration>)
Instant
The time at which this file should expire (unless FileUpdateTransaction is used before then to extend its life)
Java
1
Copied!
JavaScript
1
Copied!
Go
1
Copied!

Last modified 6d ago