Skip to content

Commit 9c2acfc

Browse files
authored
Merge pull request #14 from mintlayer/firmware_versioning
Mintlayer firmware versioning
2 parents 57506f9 + 397155e commit 9c2acfc

File tree

17 files changed

+738
-105
lines changed

17 files changed

+738
-105
lines changed

.github/actions/ui-report/action.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ inputs:
1313
default: "failure"
1414
runs:
1515
using: composite
16-
# Disabled for Mintlayer repository
17-
# steps:
16+
steps:
17+
# Disabled for Mintlayer repository
18+
# Note: GitHub doesn't like it when the "steps" element is missing or empty, so we add
19+
# a placeholder step.
20+
- run: echo "This action is disabled for Mintlayer repository"
21+
shell: sh
22+
1823
# - name: Set AWS credentials
1924
# uses: aws-actions/configure-aws-credentials@v4
2025
# with:

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.

0 commit comments

Comments
 (0)