資源

DMC 的資源分為兩種類型:一種是抵押型資源,包括CPU和NET;另一種是消耗性資源,叫做RAM,也稱存儲。

用戶擁有發佈一個合約的資源,包括足夠的 RAM、CPU 和 NET。

內存和資源

內存(RAM)

網絡寬帶(Network Bandwidth)

CPU 寬帶(CPU Bandwidth)

如何購買內存、抵押資源

購買內存

  1. 在鏈上存貯賬戶信息是需要消耗內存的,創建者需為被創建者購買內存來存放新賬戶的信息。

通過調用 buyrambytes 方法,參數和解釋說明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var DMC = require('dmc.js');
var dmc_client = DMC({
chainId: 'c102a8115bef9e4a4e751559aac2cdc2859417e6476f8cb6054cd3f7dffe1ce4',
keyProvider: 'creator_priKey',
httpEndpoint: 'http://testnode.dmctech.io:8801',
logger: {
log: null,
error: null
}
});

dmc_client.transact_sync({
actions: [{
account: 'dmc',
name: 'buyrambytes',
authorization: [{
actor: 'from', // 購買存儲資源的賬號
permission: 'active',
}],
data: {
payer: 'from', // 購買存儲資源的賬號
receiver: 'Receiver Account',//接受存儲資源的賬號
bytes: 'bytes' // 購買的內存大小
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
})
  1. 購買存儲資源,區別是買特定數量的通證還是買特定大小的內容。

通過調用 buyram 方法,參數和解釋說明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var DMC = require('dmc.js');
var dmc_client = DMC({
chainId: 'c102a8115bef9e4a4e751559aac2cdc2859417e6476f8cb6054cd3f7dffe1ce4',
keyProvider: 'creator_priKey',
httpEndpoint: 'http://testnode.dmctech.io:8801',
logger: {
log: null,
error: null
}
});

dmc_client.transact_sync({
actions: [{
account: 'dmc',
name: 'buyram',
authorization: [{
actor: 'from', // 購買存儲資源的賬號
permission: 'active',
}],
data: {
payer: 'from', // 購買存儲資源的賬號
receiver: 'Receiver Account',// 接受存儲資源的賬號
quant: "0.2000 DMC" // 購買存儲資源所用的通證數量
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
})

抵押資源

創建者為被創建者抵押 DMC 獲取 CPU 和 NET ,讓新賬戶能夠進行轉賬。

通過調用 delegatebw 方法,參數和解釋說明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var DMC = require('dmc.js');
var dmc_client = DMC({
chainId: 'c102a8115bef9e4a4e751559aac2cdc2859417e6476f8cb6054cd3f7dffe1ce4',
keyProvider: 'creator_priKey',
httpEndpoint: 'http://testnode.dmctech.io:8801',
logger: {
log: null,
error: null
}
});

dmc_client.transact_sync({
actions: [
{
account: 'dmc',
name: 'delegatebw',
authorization: [{
actor: 'from', // 資源抵押者的賬戶名
permission: 'active',
}],
data: {
from: 'from', // 資源抵押者的賬戶名
receiver: 'receiver', // 資源接受者的賬戶名
stake_net_quantity: "10.0000 DMC", // 抵押者為接受者抵押 DMC 獲取 NET
stake_cpu_quantity: "10.0000 DMC", // 抵押者為接受者抵押 DMC 獲取 CPU
transfer: 0 // 代表抵押資源同時是否將對應通證轉賬給接受者
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});

取消抵押

用來解除抵押,釋放資源,收回通證。

通過調用 undelegatebw 方法,參數和解釋說明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var DMC = require('dmc.js');
var dmc_client = DMC({
chainId: 'c102a8115bef9e4a4e751559aac2cdc2859417e6476f8cb6054cd3f7dffe1ce4',
keyProvider: 'creator_priKey',
httpEndpoint: 'http://testnode.dmctech.io:8801',
logger: {
log: null,
error: null
}
});

dmc_client.transact_sync({
actions: [
{
account: 'dmc',
name: 'undelegatebw',
authorization: [{
actor: 'from', // 資源抵押者的賬戶名
permission: 'active',
}],
data: {
from: 'from', // 解除用哪個賬號所抵押的通證
receiver: 'receiver', // 解除作用在哪個賬號上的抵押通證
unstake_net_quantity: "10.0000 DMC", //解除用來獲取帶寬資源的通證數量
unstake_cpu_quantity: "10.0000 DMC", // 解除用來獲取計算資源的通證數量
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});

出售資源

通過調用 sellram 方法,參數和解釋說明如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var dmc_client = DMC({
chainId: 'c102a8115bef9e4a4e751559aac2cdc2859417e6476f8cb6054cd3f7dffe1ce4',
keyProvider: 'creator_priKey',
httpEndpoint: 'http://testnode.dmctech.io:8801',
logger: {
log: null,
error: null
}
});

dmc_client.transact_sync({
actions: [
{
account: 'dmc',
name: 'sellram',
authorization: [{
actor: 'from', // 出售資源通證的賬號
permission: 'active',
}],
data: {
account: 'from', // 出售資源通證的賬號
bytes: 'bytes' // 出售多少空間的存儲資源
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});