pub struct FileCreateTransactionBody {
pub expiration_time: Option<Timestamp>,
pub keys: Option<KeyList>,
pub contents: Vec<u8>,
pub shard_id: Option<ShardId>,
pub realm_id: Option<RealmId>,
pub new_realm_admin_key: Option<Key>,
pub memo: String,
}Expand description
Create a new file.
If successful, the new file SHALL contain the (possibly empty) content
provided in the contents field.
When the current consensus time exceeds the expirationTime value, the
network SHALL expire the file, and MAY archive the state entry.
§Signature Requirements
The HFS manages file authorization in a manner that can be confusing.
The core element of file authorization is the keys field,
which is a KeyList; a list of individual Key messages, each of which
may represent a simple or complex key.
The file service transactions treat this list differently.
A fileCreate, fileAppend, or fileUpdate MUST have a valid signature
from each key in the list.
A fileDelete MUST have a valid signature from at least one key in
the list. This is different, and allows a file “owned” by many entities
to be deleted by any one of those entities. A deleted file cannot be
restored, so it is important to consider this when assigning keys for
a file.
If any of the keys in a KeyList are complex, the full requirements of
each complex key must be met to count as a “valid signature” for that key.
A complex key structure (i.e. a ThresholdKey, or KeyList, possibly
including additional ThresholdKey or KeyList descendants) may be
assigned as the sole entry in a file keys field to ensure all transactions
have the same signature requirements.
If the keys field is an empty KeyList, then the file SHALL be immutable
and the only transaction permitted to modify that file SHALL be a
fileUpdate transaction with only the expirationTime set.
§Shard and Realm
The current API ignores shardID and realmID. All files are created in shard 0 and realm 0. Future versions of the API may support multiple realms and multiple shards.
§Block Stream Effects
After the file is created, the FileID for it SHALL be returned in the transaction receipt, and SHALL be recorded in the transaction record.
Fields§
§expiration_time: Option<Timestamp>An expiration timestamp.
When the network consensus time exceeds this value, the network SHALL expire the file.
keys: Option<KeyList>A list of keys that represent file “owners”.
Every `Key` in this list MUST sign this `fileCreate` transaction, as
well as any `fileUpdate` or `fileAppend` that modifies this file.
At least one `Key` in this list MUST sign any `fileDelete` transaction
to delete this file.
If this `KeyList` is empty, the file SHALL be created immutable and the
only field that may be changed subsequently is the `expirationTime`.
An immutable file cannot be deleted except with a `systemDelete`
transaction, or by expiration.
contents: Vec<u8>A byte array of file content.
The file SHALL be created with initial content equal to this field.
shard_id: Option<ShardId>A shard in which this file is created
realm_id: Option<RealmId>A realm in which this file is created.
The shard number for this realm MUST match the value in `shardID`.
Currently, this MUST be `0` for both fields.
If the desired realm is `0.0`, this SHOULD NOT be set.
new_realm_admin_key: Option<Key>The “create realm” was never enabled, and
should not be possible on file creation.
An admin key for a new realm, if one is created.
Added deprecated tag 2024-05.
memo: StringA short description of this file.
This value, if set, MUST NOT exceed `transaction.maxMemoUtf8Bytes` (default 100) bytes when encoded as UTF-8.
Trait Implementations§
Source§impl Clone for FileCreateTransactionBody
impl Clone for FileCreateTransactionBody
Source§fn clone(&self) -> FileCreateTransactionBody
fn clone(&self) -> FileCreateTransactionBody
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FileCreateTransactionBody
impl Debug for FileCreateTransactionBody
Source§impl Default for FileCreateTransactionBody
impl Default for FileCreateTransactionBody
Source§impl Message for FileCreateTransactionBody
impl Message for FileCreateTransactionBody
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.impl StructuralPartialEq for FileCreateTransactionBody
Auto Trait Implementations§
impl Freeze for FileCreateTransactionBody
impl RefUnwindSafe for FileCreateTransactionBody
impl Send for FileCreateTransactionBody
impl Sync for FileCreateTransactionBody
impl Unpin for FileCreateTransactionBody
impl UnsafeUnpin for FileCreateTransactionBody
impl UnwindSafe for FileCreateTransactionBody
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request