Compare commits

...

8 Commits

Author SHA1 Message Date
Proto
9263d74b75 Update TransactionValidity_fr.properties 2021-12-19 11:16:20 +01:00
Proto
9601bddc84 Update SysTray_fr.properties 2021-12-19 11:05:34 +01:00
Proto
e281e19052 Add files via upload 2021-12-19 11:02:00 +01:00
Proto
0238b78f45 Update ApiError_fr.properties 2021-12-19 10:57:57 +01:00
QuickMythril
0ccee4326d Added French translations
credit: stchoupi
2021-12-18 15:57:49 -05:00
CalDescent
391c3fe4c9 Added same functionality to GET /blocks/signature/{signature}
Also renamed query string parameter to "includeOnlineSignatures" to make it clearer.
2021-12-15 16:37:59 +00:00
CalDescent
3a7da9f13b Don't return online accounts signatures from GET /blocks/byheight/{height} unless requested using the includesignatures=true query string parameter.
This should fix issue where it would take up to 30 seconds to return for a recent block, and would consume masses of CPU due to having to base58 encode the online accounts signatures. Base58 is very slow and made this API endpoint almost unusable for recent blocks, due to them having untrimmed online accounts signatures.
2021-12-15 16:33:08 +00:00
CalDescent
e7fd803d19 Updated AdvancedInstaller project for v2.1.2 2021-12-11 22:16:43 +00:00
7 changed files with 272 additions and 7 deletions

View File

@@ -17,10 +17,10 @@
<ROW Property="Manufacturer" Value="Qortal"/>
<ROW Property="MsiLogging" MultiBuildValue="DefaultBuild:vp"/>
<ROW Property="NTP_GOOD" Value="false"/>
<ROW Property="ProductCode" Value="1033:{817F888F-5FFB-40A4-B839-941BB9426D93} 1049:{402239D3-5D8E-4FFC-9BAC-1920DBCC6D34} 2052:{BB2EB961-8D52-43AD-9BDE-8B7CA4D5985B} 2057:{C1281311-FCA8-4B2B-AB06-7DD75CE0D302} " Type="16"/>
<ROW Property="ProductCode" Value="1033:{D45BD9F0-1D22-46A2-9990-8BB3598D8AD3} 1049:{21BCBDEC-4BF2-41D6-9426-E906042FD61F} 2052:{95F43BE3-58B4-4422-BCCF-D77F4BBFD7A4} 2057:{4C4D611E-3AF5-4216-952A-CA9E5EC32C19} " Type="16"/>
<ROW Property="ProductLanguage" Value="2057"/>
<ROW Property="ProductName" Value="Qortal"/>
<ROW Property="ProductVersion" Value="2.1.1" Type="32"/>
<ROW Property="ProductVersion" Value="2.1.2" Type="32"/>
<ROW Property="RECONFIG_NTP" Value="true"/>
<ROW Property="REMOVE_BLOCKCHAIN" Value="YES" Type="4"/>
<ROW Property="REPAIR_BLOCKCHAIN" Value="YES" Type="4"/>
@@ -212,7 +212,7 @@
<ROW Component="ADDITIONAL_LICENSE_INFO_71" ComponentId="{12A3ADBE-BB7A-496C-8869-410681E6232F}" Directory_="jdk.zipfs_Dir" Attributes="0" KeyPath="ADDITIONAL_LICENSE_INFO_71" Type="0"/>
<ROW Component="ADDITIONAL_LICENSE_INFO_8" ComponentId="{D53AD95E-CF96-4999-80FC-5812277A7456}" Directory_="java.naming_Dir" Attributes="0" KeyPath="ADDITIONAL_LICENSE_INFO_8" Type="0"/>
<ROW Component="ADDITIONAL_LICENSE_INFO_9" ComponentId="{6B7EA9B0-5D17-47A8-B78C-FACE86D15E01}" Directory_="java.net.http_Dir" Attributes="0" KeyPath="ADDITIONAL_LICENSE_INFO_9" Type="0"/>
<ROW Component="AI_CustomARPName" ComponentId="{E9D8F0C9-6CF8-477D-9410-49FB5425AEB1}" Directory_="APPDIR" Attributes="260" KeyPath="DisplayName" Options="1"/>
<ROW Component="AI_CustomARPName" ComponentId="{5109CB00-40C0-499E-875B-9364F2075410}" Directory_="APPDIR" Attributes="260" KeyPath="DisplayName" Options="1"/>
<ROW Component="AI_ExePath" ComponentId="{3644948D-AE0B-41BB-9FAF-A79E70490A08}" Directory_="APPDIR" Attributes="260" KeyPath="AI_ExePath"/>
<ROW Component="APPDIR" ComponentId="{680DFDDE-3FB4-47A5-8FF5-934F576C6F91}" Directory_="APPDIR" Attributes="0"/>
<ROW Component="AccessBridgeCallbacks.h" ComponentId="{288055D1-1062-47A3-AA44-5601B4E38AED}" Directory_="bridge_Dir" Attributes="0" KeyPath="AccessBridgeCallbacks.h" Type="0"/>

View File

@@ -75,7 +75,8 @@ public class BlocksResource {
@ApiErrors({
ApiError.INVALID_SIGNATURE, ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE
})
public BlockData getBlock(@PathParam("signature") String signature58) {
public BlockData getBlock(@PathParam("signature") String signature58,
@QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) {
// Decode signature
byte[] signature;
try {
@@ -88,12 +89,18 @@ public class BlocksResource {
// Check the database first
BlockData blockData = repository.getBlockRepository().fromSignature(signature);
if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData;
}
// Not found, so try the block archive
blockData = repository.getBlockArchiveRepository().fromSignature(signature);
if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData;
}
@@ -423,17 +430,24 @@ public class BlocksResource {
@ApiErrors({
ApiError.BLOCK_UNKNOWN, ApiError.REPOSITORY_ISSUE
})
public BlockData getByHeight(@PathParam("height") int height) {
public BlockData getByHeight(@PathParam("height") int height,
@QueryParam("includeOnlineSignatures") Boolean includeOnlineSignatures) {
try (final Repository repository = RepositoryManager.getRepository()) {
// Firstly check the database
BlockData blockData = repository.getBlockRepository().fromHeight(height);
if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData;
}
// Not found, so try the archive
blockData = repository.getBlockArchiveRepository().fromHeight(height);
if (blockData != null) {
if (includeOnlineSignatures == null || includeOnlineSignatures == false) {
blockData.setOnlineAccountsSignatures(null);
}
return blockData;
}

View File

@@ -204,6 +204,10 @@ public class BlockData implements Serializable {
return this.onlineAccountsSignatures;
}
public void setOnlineAccountsSignatures(byte[] onlineAccountsSignatures) {
this.onlineAccountsSignatures = onlineAccountsSignatures;
}
// JAXB special
@XmlElement(name = "minterAddress")

View File

@@ -0,0 +1,55 @@
### Commun ###
JSON = échec de l'analyse du message JSON
INSUFFICIENT_BALANCE = balance insuffisante
UNAUTHORIZED = appel de lAPI non autorisé
REPOSITORY_ISSUE = erreur de dépôt
NON_PRODUCTION = cet appel API n'est pas autorisé pour les systèmes en production
BLOCKCHAIN_NEEDS_SYNC = la blockchain doit d'abord être synchronisée
NO_TIME_SYNC = heure pas encore synchronisée
### Validation ###
INVALID_SIGNATURE = signature invalide
INVALID_ADDRESS = adresse invalide
INVALID_PUBLIC_KEY = clé publique invalide
INVALID_DATA = données invalides
INVALID_NETWORK_ADDRESS = adresse réseau invalide
ADDRESS_UNKNOWN = adresse de compte inconnue
INVALID_CRITERIA = critère de recherche invalide
INVALID_REFERENCE = référence invalide
TRANSFORMATION_ERROR = ne peut pas transformer JSON en transaction
INVALID_PRIVATE_KEY = clé privée invalide
INVALID_HEIGHT = hauteur de bloc invalide
CANNOT_MINT = le compte ne peut pas mint
### Blocks ###
BLOCK_UNKNOWN = bloc inconnu
### Transactions ###
TRANSACTION_UNKNOWN = opération inconnue
PUBLIC_KEY_NOT_FOUND = clé publique introuvable
# celui-ci est spécial dans le sens où l'appelant doit passer deux chaînes supplémentaires, d'où les deux %s
TRANSACTION_INVALID = transaction invalide: %s (%s)
### Nommage ###
NAME_UNKNOWN = nom inconnu
### Asset ###
INVALID_ASSET_ID = identifiant d'actif invalide
INVALID_ORDER_ID = identifiant de commande d'actif non valide
ORDER_UNKNOWN = identifiant d'ordre d'actif inconnu
### Groupes ###
GROUP_UNKNOWN = groupe inconnu
### Blockchain étrangère ###
FOREIGN_BLOCKCHAIN_NETWORK_ISSUE = Problème blokchain étrangère ou de réseau ElectrumX
FOREIGN_BLOCKCHAIN_BALANCE_ISSUE = solde insuffisant sur la blockchain étrangère
FOREIGN_BLOCKCHAIN_TOO_SOON = trop tôt pour diffuser la transaction sur la blockchain étrangère (temps de verrouillage/temps de bloc médian)
### Portail de trading ###
ORDER_SIZE_TOO_SMALL = montant de commande trop bas
### Données ###
FILE_NOT_FOUND = fichier introuvable
NO_REPLY = le pair n'a pas renvoyé de données

View File

@@ -0,0 +1,41 @@
AUTO_UPDATE = Mise à jour automatique
APPLYING_UPDATE_AND_RESTARTING = Application de la mise à jour automatique et redémarrage...
BLOCK_HEIGHT = hauteur
BUILD_VERSION = Numéro de version
CHECK_TIME_ACCURACY = Vérifier l'heure
CONNECTING = Connexion en cours
CONNECTION = connexion
CONNECTIONS = connexions
CREATING_BACKUP_OF_DB_FILES = Création d'une sauvegarde des fichiers de la base de données...
DB_BACKUP = Sauvegarde de la base de données
DB_MAINTENANCE = Maintenance de la base de données
DB_CHECKPOINT = Point de contrôle de la base de données
EXIT = Quitter
MINTING_DISABLED = NE mint PAS
MINTING_ENABLED = \u2714 Minting
OPEN_UI = Ouvrir l'interface
PERFORMING_DB_CHECKPOINT = Enregistrement des modifications de base de données non validées...
PERFORMING_DB_MAINTENANCE = Entrain d'effectuer la maintenance programmée...
SYNCHRONIZE_CLOCK = Mettre l'heure à jour
SYNCHRONIZING_BLOCKCHAIN = Synchronisation
SYNCHRONIZING_CLOCK = Synchronisation de l'heure

View File

@@ -0,0 +1,151 @@
OK = OK
INVALID_ADDRESS = adresse invalide
NEGATIVE_AMOUNT = montant invalide/négatif
NEGATIVE_FEE = frais invalides/négatifs
NO_BALANCE = solde insuffisant
INVALID_REFERENCE = référence invalide
INVALID_NAME_LENGTH = longueur de nom invalide
INVALID_VALUE_LENGTH = longueur de 'valeur' invalide
NAME_ALREADY_REGISTERED = le nom est déjà enregistré
NAME_DOES_NOT_EXIST = le nom n'existe pas
INVALID_NAME_OWNER = le nom du propriétaire est invalide
NAME_ALREADY_FOR_SALE = le nom est déjà en vente
NAME_NOT_FOR_SALE = le nom n'est pas à vendre
BUYER_ALREADY_OWNER = l'acheteur est déjà le propriétaire
INVALID_AMOUNT = montant invalide
INVALID_SELLER = vendeur invalide
NAME_NOT_NORMALIZED = le nom n'est pas sous la forme 'normalisée' Unicode
INVALID_DESCRIPTION_LENGTH = longueur de description invalide
INVALID_OPTIONS_COUNT = nombre d'options invalides
INVALID_OPTION_LENGTH = longueur des options invalide
DUPLICATE_OPTION = option dupliquée
POLL_ALREADY_EXISTS = le scrutin existe déjà
POLL_DOES_NOT_EXIST = le scrutin n'existe pas
POLL_OPTION_DOES_NOT_EXIST = Ce choix de scrutin n'existe pas
ALREADY_VOTED_FOR_THAT_OPTION = Vous avez déjà voté pour ce choix
INVALID_DATA_LENGTH = longueur de données invalide
INVALID_QUANTITY = quantité invalide
ASSET_DOES_NOT_EXIST = l'actif n'existe pas
INVALID_RETURN = retour invalide
HAVE_EQUALS_WANT = l'actif désiré est le même que l'actif possédé
ORDER_DOES_NOT_EXIST = l'ordre d'échange d'actifs n'existe pas
INVALID_ORDER_CREATOR = créateur d'ordre invalide
INVALID_PAYMENTS_COUNT = nombre de paiements invalides
NEGATIVE_PRICE = prix invalide/négatif
INVALID_CREATION_BYTES = octets de création invalides
INVALID_TAGS_LENGTH = longueur de 'tags' invalide
INVALID_AT_TYPE_LENGTH = longueur 'type' AT invalide
INVALID_AT_TRANSACTION = transaction AT invalide
INSUFFICIENT_FEE = frais insuffisant
ASSET_DOES_NOT_MATCH_AT = l'actif ne correspond pas à l'actif d'AT
ASSET_ALREADY_EXISTS = l'actif existe déjà
MISSING_CREATOR = créateur manquant
TIMESTAMP_TOO_OLD = horodatage trop ancien
TIMESTAMP_TOO_NEW = horodatage trop récent
TOO_MANY_UNCONFIRMED = le compte a trop de transactions non confirmées en attente
GROUP_ALREADY_EXISTS = le groupe existe déjà
GROUP_DOES_NOT_EXIST = le groupe n'existe pas
INVALID_GROUP_OWNER = propriétaire de groupe invalide
ALREADY_GROUP_MEMBER = vous êtes déjà un(e) membre du groupe
GROUP_OWNER_CANNOT_LEAVE = le propriétaire du groupe ne peut pas quitter le groupe
NOT_GROUP_MEMBER = le compte n'est pas membre du groupe
ALREADY_GROUP_ADMIN = vous êtes déjà l'administrateur(trice) du groupe
NOT_GROUP_ADMIN = le compte n'est pas un administrateur du groupe
INVALID_LIFETIME = durée de vie invalide
INVITE_UNKNOWN = invitation de groupe inconnue
BAN_EXISTS = déjà banni
BAN_UNKNOWN = bannissement inconnu
BANNED_FROM_GROUP = banned from group
JOIN_REQUEST_EXISTS = la demande d'adhésion au groupe existe déjà
INVALID_GROUP_APPROVAL_THRESHOLD = seuil d'approbation de groupe non valide
GROUP_ID_MISMATCH = identifiant de groupe non-concorde
INVALID_GROUP_ID = identifiant de groupe invalide
TRANSACTION_UNKNOWN = transaction inconnue
TRANSACTION_ALREADY_CONFIRMED = la transaction a déjà été confirmée
INVALID_TX_GROUP_ID = identifiant du groupe de transactions invalide
TX_GROUP_ID_MISMATCH = l'identifiant du groupe de transaction ne correspond pas
MULTIPLE_NAMES_FORBIDDEN = l'enregistrement de plusieurs noms par compte est interdit
INVALID_ASSET_OWNER = propriétaire de l'actif invalide
AT_IS_FINISHED = l'AT est fini
NO_FLAG_PERMISSION = le compte n'a pas cette autorisation
NOT_MINTING_ACCOUNT = le compte ne peut pas mint
REWARD_SHARE_UNKNOWN = partage de récompense inconnu
INVALID_REWARD_SHARE_PERCENT = pourcentage du partage de récompense invalide
PUBLIC_KEY_UNKNOWN = clé publique inconnue
INVALID_PUBLIC_KEY = clé publique invalide
AT_UNKNOWN = AT inconnu
AT_ALREADY_EXISTS = AT déjà existante
GROUP_APPROVAL_NOT_REQUIRED = approbation de groupe non requise
GROUP_APPROVAL_DECIDED = approbation de groupe déjà décidée
MAXIMUM_REWARD_SHARES = déjà au nombre maximum de récompense pour ce compte
TRANSACTION_ALREADY_EXISTS = la transaction existe déjà
NO_BLOCKCHAIN_LOCK = nœud de la blockchain actuellement occupé
ORDER_ALREADY_CLOSED = l'ordre d'échange d'actifs est déjà fermé
CLOCK_NOT_SYNCED = horloge non synchronisée
ASSET_NOT_SPENDABLE = l'actif n'est pas dépensable
ACCOUNT_CANNOT_REWARD_SHARE = le compte ne peut pas récompenser
SELF_SHARE_EXISTS = l'auto-partage (récompense) existe déjà
ACCOUNT_ALREADY_EXISTS = Le compte existe déjà
INVALID_GROUP_BLOCK_DELAY = délai de blocage d'approbation de groupe invalide
INCORRECT_NONCE = PoW nonce incorrect
INVALID_TIMESTAMP_SIGNATURE = signature d'horodatage invalide
ADDRESS_IN_BLACKLIST = cette adresse est dans votre liste noire
ADDRESS_ABOVE_RATE_LIMIT = l'adresse a atteint la limite de débit spécifiée
DUPLICATE_MESSAGE = l'adresse a envoyé un message en double
INVALID_BUT_OK = invalide mais OK
NOT_YET_RELEASED = fonctionnalité pas encore publiée

View File

@@ -40,7 +40,7 @@ public class BlockApiTests extends ApiCommon {
byte[] signatureBytes = GenesisBlock.getInstance(repository).getSignature();
String signature = Base58.encode(signatureBytes);
assertNotNull(this.blocksResource.getBlock(signature));
assertNotNull(this.blocksResource.getBlock(signature, true));
}
}
@@ -72,7 +72,7 @@ public class BlockApiTests extends ApiCommon {
@Test
public void testGetBlockByHeight() {
assertNotNull(this.blocksResource.getByHeight(1));
assertNotNull(this.blocksResource.getByHeight(1, true));
}
@Test