> ## Documentation Index
> Fetch the complete documentation index at: https://docs.therootnetwork.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SyloDataVerification

The Sylo Data Verification pallet provides functionality for registering resolvers and verifying data through validation records. It allows users to create, update, and delete validation records that can be used to verify the authenticity and integrity of data.

## Calls

### setPaymentAsset

Set the asset used to pay for sylo extrinsics.

This operation requires root access.

**Namespace**

```
api.tx.syloDataVerification.setPaymentAsset
```

**Type**

```
function setPaymentAsset(
  payment_asset: u32
)
```

### setSyloResolverMethod

Set the string used as the reserved sylo resolver method.

This operation requires root access.

**Namespace**

```
api.tx.syloDataVerification.setSyloResolverMethod
```

**Type**

```
function setSyloResolverMethod(
  resolver_method: Bytes
)
```

### registerResolver

Register a new resolver.

The caller will be set as the controller of the resolver.

**Namespace**

```
api.tx.syloDataVerification.registerResolver
```

**Type**

```
function registerResolver(
  identifier: Bytes,
  service_endpoints: Vec<Bytes>
)
```

### updateResolver

Update the service endpoints of an existing resolver.

Caller must be the controller of the resolver.

**Namespace**

```
api.tx.syloDataVerification.updateResolver
```

**Type**

```
function updateResolver(
  identifier: Bytes,
  service_endpoints: Vec<Bytes>
)
```

### deregisterResolver

Deregister an existing resolver.

Caller must be the controller of the resolver.

**Namespace**

```
api.tx.syloDataVerification.deregisterResolver
```

**Type**

```
function deregisterResolver(
  identifier: Bytes
)
```

### createValidationRecord

Create a new validation record.

The caller will be set as the record's author.

For any specified resolvers which use the reserved sylo resolver method, those resolvers must already be registered and exist in storage.

The initial record entry will use the current system block for the block value.

**Namespace**

```
api.tx.syloDataVerification.createValidationRecord
```

**Type**

```
function createValidationRecord(
  data_id: Bytes,
  resolvers: Vec<{method: Bytes, identifier: Bytes}>,
  data_type: Bytes,
  tags: Vec<Bytes>,
  checksum: H256
)
```

### addValidationRecordEntry

Add a new entry to an existing validation record.

The current block will be used as the entry's block number.

Caller must be the author of the record.

**Namespace**

```
api.tx.syloDataVerification.addValidationRecordEntry
```

**Type**

```
function addValidationRecordEntry(
  data_id: Bytes,
  checksum: H256
)
```

### updateValidationRecord

Update a validation record's fields. The call takes in an Option value for the fields: resolvers, data\_type, and tags.

Setting those fields to Some value will update the field in storage, whilst setting to None will be a no-op.

Caller must be the author of the record.

**Namespace**

```
api.tx.syloDataVerification.updateValidationRecord
```

**Type**

```
function updateValidationRecord(
  data_id: Bytes,
  resolvers: Option<Vec<{method: Bytes, identifier: Bytes}>>,
  data_type: Option<Bytes>,
  tags: Option<Vec<Bytes>>
)
```

### deleteValidationRecord

Delete an existing validation record.

Caller must be the author of the record.

**Namespace**

```
api.tx.syloDataVerification.deleteValidationRecord
```

**Type**

```
function deleteValidationRecord(
  data_id: Bytes
)
```

## Storage

### SyloAssetId

The asset used to pay for sylo extrinsics.

**Namespace**

```
api.query.syloDataVerification.syloAssetId
```

**Type**

```
function syloAssetId(): Option<u32>
```

### SyloResolverMethod

The string reserved for the method used by sylo resolvers.

**Namespace**

```
api.query.syloDataVerification.syloResolverMethod
```

**Type**

```
function syloResolverMethod(): Bytes
```

### Resolvers

Map from resolver identifier to resolver information.

**Namespace**

```
api.query.syloDataVerification.resolvers
```

**Type**

```
function resolvers(
  Bytes
): Option<{
  controller: AccountId,
  service_endpoints: Vec<Bytes>
}>
```

### ValidationRecords

Map from account and data identifier to validation record information.

**Namespace**

```
api.query.syloDataVerification.validationRecords
```

**Type**

```
function validationRecords(
  AccountId,
  Bytes
): Option<{
  author: AccountId,
  resolvers: Vec<{method: Bytes, identifier: Bytes}>,
  data_type: Bytes,
  tags: Vec<Bytes>,
  entries: Vec<{checksum: H256, block: BlockNumber}>
}>
```

## Events

### PaymentAssetSet

The asset used for extrinsics has been set.

**Namespace**

```
api.events.syloDataVerification.PaymentAssetSet
```

**Type**

```
type PaymentAssetSet = {
  asset_id: u32
}
```

### SyloResolverMethodSet

The string reserved for the method used by sylo resolvers has been set.

**Namespace**

```
api.events.syloDataVerification.SyloResolverMethodSet
```

**Type**

```
type SyloResolverMethodSet = {
  method: Vec<u8>
}
```

### ResolverRegistered

A new resolver has been registered and set in storage.

**Namespace**

```
api.events.syloDataVerification.ResolverRegistered
```

**Type**

```
type ResolverRegistered = {
  id: Vec<u8>,
  controller: AccountId,
  service_endpoints: Vec<Vec<u8>>
}
```

### ResolverUpdated

An existing resolver has had its service endpoints updated.

**Namespace**

```
api.events.syloDataVerification.ResolverUpdated
```

**Type**

```
type ResolverUpdated = {
  id: Vec<u8>,
  controller: AccountId,
  service_endpoints: Vec<Vec<u8>>
}
```

### ResolverDeregistered

An existing resolver has been deregistered and removed from storage.

**Namespace**

```
api.events.syloDataVerification.ResolverDeregistered
```

**Type**

```
type ResolverDeregistered = {
  id: Vec<u8>
}
```

### ValidationRecordCreated

A new validation record has been created and set in storage.

**Namespace**

```
api.events.syloDataVerification.ValidationRecordCreated
```

**Type**

```
type ValidationRecordCreated = {
  author: AccountId,
  id: Vec<u8>
}
```

### ValidationEntryAdded

An entry of an existing validation record has been added.

**Namespace**

```
api.events.syloDataVerification.ValidationEntryAdded
```

**Type**

```
type ValidationEntryAdded = {
  author: AccountId,
  id: Vec<u8>,
  checksum: H256
}
```

### ValidationRecordUpdated

An existing validation record has had its fields updated.

**Namespace**

```
api.events.syloDataVerification.ValidationRecordUpdated
```

**Type**

```
type ValidationRecordUpdated = {
  author: AccountId,
  id: Vec<u8>,
  resolvers: Option<Vec<Vec<u8>>>,
  data_type: Option<Vec<u8>>,
  tags: Option<Vec<Vec<u8>>>
}
```

### ValidationRecordDeleted

An existing validation record has been deleted and removed from storage.

**Namespace**

```
api.events.syloDataVerification.ValidationRecordDeleted
```

**Type**

```
type ValidationRecordDeleted = {
  author: AccountId,
  id: Vec<u8>
}
```

## Errors

### ResolverAlreadyRegistered

The Resolver identifier is already in use.

**Namespace**

```
api.errors.syloDataVerification.ResolverAlreadyRegistered
```

### ResolverNotRegistered

The Resolver has not been registered.

**Namespace**

```
api.errors.syloDataVerification.ResolverNotRegistered
```

### NotController

Account is not controller of resolver.

**Namespace**

```
api.errors.syloDataVerification.NotController
```

### RecordAlreadyCreated

A validation record with the given data id has already been created.

**Namespace**

```
api.errors.syloDataVerification.RecordAlreadyCreated
```

### NoValidationRecord

The validation record to be updated has not been created.

**Namespace**

```
api.errors.syloDataVerification.NoValidationRecord
```

## Constants

### MaxResolvers

The maximum number of resolvers in a validation record.

**Namespace**

```
api.consts.syloDataVerification.MaxResolvers
```

**Type**

```
type MaxResolvers = u32
```

### MaxTags

The maximum number of tags in a validation record.

**Namespace**

```
api.consts.syloDataVerification.MaxTags
```

**Type**

```
type MaxTags = u32
```

### MaxEntries

The maximum number of validation entries in a record.

**Namespace**

```
api.consts.syloDataVerification.MaxEntries
```

**Type**

```
type MaxEntries = u32
```

### MaxServiceEndpoints

The maximum number of service endpoints for a registered resolver.

**Namespace**

```
api.consts.syloDataVerification.MaxServiceEndpoints
```

**Type**

```
type MaxServiceEndpoints = u32
```

### StringLimit

The max length of strings used within the Sylo Pallet.

**Namespace**

```
api.consts.syloDataVerification.StringLimit
```

**Type**

```
type StringLimit = u32
```
