Skip to content

Commit d9faedb

Browse files
committed
Mintlayer firmware versioning
1 parent 57506f9 commit d9faedb

File tree

16 files changed

+731
-103
lines changed

16 files changed

+731
-103
lines changed

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
# This is Mintlayer's fork of the Trezor firmware repository
2+
3+
Note: the fork maintains a parallel versioning scheme. The mapping between our version and the original version is as follows:
4+
5+
| Mintlayer firmware version | Original firmware version | Upstream repository revision or tag |
6+
| --- | --- | --- |
7+
| 1.0.0 | 2.9.0 | core/v2.9.0 |
8+
9+
The current Mintlayer firmware version can be obtained via `trezorctl mintlayer get-firmware-info`.
10+
11+
The original README goes below:
12+
113
# Trezor Firmware
214

315
![img](https://repository-images.githubusercontent.com/180590388/968e6880-6538-11e9-9da6-4aef78157e94)

common/protob/messages-mintlayer.proto

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,26 @@ enum MintlayerChainType {
1515
Signet = 4;
1616
}
1717

18+
/**
19+
* Request: Ask the device for the info about the current firmware
20+
* @start
21+
* @next MintlayerFirmwareInfo
22+
* @next Failure
23+
*/
24+
message MintlayerGetFirmwareInfo {}
25+
26+
/**
27+
* Response: The info about the current firmware
28+
* @end
29+
*/
30+
message MintlayerFirmwareInfo {
31+
required uint32 major_version = 1; // major version of the firmware, e.g. 1
32+
required uint32 minor_version = 2; // minor version of the firmware, e.g. 0
33+
required uint32 patch_version = 3; // patch version of the firmware, e.g. 0
34+
required string prerelease_id = 4; // semver pre-release identifier, e.g. "alpha"; can be empty
35+
required string build_metadata = 5; // semver build metadata; can be empty
36+
}
37+
1838
/**
1939
* Request: Ask the device for a Mintlayer address.
2040
* @start

common/protob/messages.proto

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -355,12 +355,14 @@ enum MessageType {
355355
MessageType_BenchmarkResult = 9103 [(bitcoin_only) = true];
356356

357357
// Mintlayer
358-
MessageType_MintlayerGetAddress = 10000 [(wire_in) = true];
359-
MessageType_MintlayerAddress = 10001 [(wire_out) = true];
360-
MessageType_MintlayerGetPublicKey = 10002 [(wire_in) = true];
361-
MessageType_MintlayerPublicKey = 10003 [(wire_out) = true];
362-
MessageType_MintlayerSignMessage = 10004 [(wire_in) = true];
363-
MessageType_MintlayerSignTx = 10005 [(wire_in) = true];
364-
MessageType_MintlayerTxRequest = 10006 [(wire_out) = true];
365-
MessageType_MintlayerTxAck = 10007 [(wire_in) = true];
358+
MessageType_MintlayerGetFirmwareInfo = 10000 [(wire_in) = true];
359+
MessageType_MintlayerFirmwareInfo = 10001 [(wire_out) = true];
360+
MessageType_MintlayerGetAddress = 10002 [(wire_in) = true];
361+
MessageType_MintlayerAddress = 10003 [(wire_out) = true];
362+
MessageType_MintlayerGetPublicKey = 10004 [(wire_in) = true];
363+
MessageType_MintlayerPublicKey = 10005 [(wire_out) = true];
364+
MessageType_MintlayerSignMessage = 10006 [(wire_in) = true];
365+
MessageType_MintlayerSignTx = 10007 [(wire_in) = true];
366+
MessageType_MintlayerTxRequest = 10008 [(wire_out) = true];
367+
MessageType_MintlayerTxAck = 10009 [(wire_in) = true];
366368
}

core/embed/upymod/qstrdefsport.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ Q(apps.management.show_tutorial)
154154
Q(apps.management.wipe_device)
155155
Q(apps.mintlayer)
156156
Q(apps.mintlayer.get_address)
157+
Q(apps.mintlayer.get_firmware_info)
157158
Q(apps.mintlayer.get_public_key)
158159
Q(apps.mintlayer.sign_message)
159160
Q(apps.mintlayer.sign_tx)
@@ -228,6 +229,7 @@ Q(get_address)
228229
Q(get_ecdh_session_key)
229230
Q(get_entropy)
230231
Q(get_firmware_hash)
232+
Q(get_firmware_info)
231233
Q(get_next_u2f_counter)
232234
Q(get_nonce)
233235
Q(get_ownership_id)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import TYPE_CHECKING
2+
from ubinascii import hexlify
3+
4+
from trezor import utils
5+
6+
if TYPE_CHECKING:
7+
from trezor.messages import MintlayerFirmwareInfo, MintlayerGetFirmwareInfo
8+
9+
10+
MINTLAYER_FIRMWARE_VERSION_MAJOR = 1
11+
MINTLAYER_FIRMWARE_VERSION_MINOR = 0
12+
MINTLAYER_FIRMWARE_VERSION_PATCH = 0
13+
MINTLAYER_FIRMWARE_PRERELEASE_ID = ""
14+
# Note: 12-character hash should be more than enough for any forseable future
15+
# (at the time of writing this, 9-character hashes seem to be sufficient, but it won't
16+
# hurt to have some leeway).
17+
MINTLAYER_FIRMWARE_BUILD_METADATA = hexlify(utils.SCM_REVISION).decode()[0:12]
18+
19+
20+
async def get_firmware_info(_msg: MintlayerGetFirmwareInfo) -> MintlayerFirmwareInfo:
21+
from trezor.messages import MintlayerFirmwareInfo
22+
23+
return MintlayerFirmwareInfo(
24+
major_version=MINTLAYER_FIRMWARE_VERSION_MAJOR,
25+
minor_version=MINTLAYER_FIRMWARE_VERSION_MINOR,
26+
patch_version=MINTLAYER_FIRMWARE_VERSION_PATCH,
27+
prerelease_id=MINTLAYER_FIRMWARE_PRERELEASE_ID,
28+
build_metadata=MINTLAYER_FIRMWARE_BUILD_METADATA,
29+
)

core/src/apps/workflow_handlers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ def _find_message_handler_module(msg_type: int) -> str:
217217
return "apps.solana.sign_tx"
218218

219219
# mintlayer
220+
if msg_type == MessageType.MintlayerGetFirmwareInfo:
221+
return "apps.mintlayer.get_firmware_info"
220222
if msg_type == MessageType.MintlayerGetAddress:
221223
return "apps.mintlayer.get_address"
222224
if msg_type == MessageType.MintlayerGetPublicKey:

core/src/trezor/enums/MessageType.py

Lines changed: 10 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/trezor/enums/__init__.py

Lines changed: 10 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/trezor/messages.py

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python/src/trezorlib/cli/mintlayer.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def cli() -> None:
1616
"""Mintlayer coin commands."""
1717

1818

19+
@cli.command()
20+
@with_client
21+
def get_firmware_info(client: "TrezorClient") -> messages.MintlayerFirmwareInfo:
22+
"""Get firmware info."""
23+
24+
return mintlayer.get_firmware_info(client)
25+
26+
1927
@cli.command()
2028
@click.option(
2129
"-c",

0 commit comments

Comments
 (0)